我可以从Vuex中的吸气剂分派吗

小提琴:这里

我正在使用Vue 2和Vue 2创建一个Webapp。我有一家商店,我想在这里从getter获取状态数据,我想要的是,如果getter发现尚未填充数据,它将调用dispatch并获取数据。

以下是我的Vuex商店:

const state = {
  pets: []
};

const mutations = {
  SET_PETS (state, response) {
    state.pets = response;
  }
};

const actions = {
 FETCH_PETS: (state) => {
      setTimeout(function() { 
            state.commit('SET_PETS', ['t7m12qbvb/apple_9', '6pat9znxz/1448127928_kiwi'])
    }, 1000)
 }
}

const getters = {
    pets(state){
    if(!state.pets.length){
        state.dispatch("FETCH_PETS")
    }
    return state.pets
  }
}

const store = new Vuex.Store({
  state,
  mutations,
  actions,
  getters
});

但是我收到以下错误:

未捕获的TypeError:state.dispatch不是函数(…)

我知道我可以从beforeMountVue组件中做到这一点,但是我有多个使用同一Vuex存储的组件,因此我必须在其中一个组件中进行操作,这应该是哪个组件,以及它将如何影响其他组件。

Mandy2020/04/07 11:14:37

因为它们是通过吸气剂不能打电话调度state没有context实体店

动作可以在传递上下文时调用状态,调度,提交。

吸气剂用于管理“派生状态”。

如果改为pets在需要状态的组件上设置状态,则只需FETCH_PETS从应用程序的根目录中调用即可,而无需使用getter