小提琴:这里
我正在使用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不是函数(…)
我知道我可以从beforeMount
Vue组件中做到这一点,但是我有多个使用同一Vuex存储的组件,因此我必须在其中一个组件中进行操作,这应该是哪个组件,以及它将如何影响其他组件。
因为它们是通过吸气剂不能打电话调度
state
没有context
实体店动作可以在传递上下文时调用状态,调度,提交。
吸气剂用于管理“派生状态”。
如果改为
pets
在需要状态的组件上设置状态,则只需FETCH_PETS
从应用程序的根目录中调用即可,而无需使用getter