小提琴:here https://jsfiddle.net/9a6Lg2vd/6/
我正在使用 Vue 2 和 Vuex 创建一个 web 应用程序。我有一个商店,我想从 getter 获取状态数据,我想要的是如果 getter 发现数据尚未填充,它会调用调度并获取数据。
以下是我的 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 不是一个函数(…)
我知道我能做到这一点,从beforeMount
Vue 组件,但我有多个使用相同 Vuex 存储的组件,所以我必须在其中一个组件中执行此操作,应该是哪个组件以及它将如何影响其他组件。
Getters 无法调用调度,因为他们传递了state
not context
商店的
动作在传递上下文时可以调用状态、调度、提交。
Getter 用于管理“派生状态”。
如果您改为设置pets
声明需要它的组件,然后你只需调用FETCH_PETS
从应用程序的根目录删除对 getter 的需要
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)