Fiddle : 这里
我正在使用Vue 2和Vuex创建一个Web应用程序。我有一个存储区,在那里我想从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
});
但是我遇到了以下错误:
未捕获的类型错误:state.dispatch不是一个函数(…)
我知道我可以在Vue组件的beforeMount
中做到这一点,但我有多个使用相同Vuex store的组件,因此我必须在其中一个组件中执行它,那应该是哪个组件,并且它将如何影响其他组件。