gpt4 book ai didi

javascript - 我可以从 Vuex 中的 getters 进行调度吗

转载 作者:可可西里 更新时间:2023-11-01 02:08:52 25 4
gpt4 key购买 nike

fiddle :here

我正在使用带有 Vuex 的 Vue 2 创建一个网络应用程序。我有一家商店,我想从 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
});

但我收到以下错误:

Uncaught TypeError: state.dispatch is not a function(…)

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

最佳答案

Getter 无法调用 dispatch,因为它们传递的是商店的 state 而不是 context

在传递上下文时,操作可以调用状态、分派(dispatch)、提交。

Getter 用于管理“派生状态”。

如果您改为在需要它的组件上设置 pets 状态,那么您只需从应用程序的根目录调用 FETCH_PETS 并删除对 getter 的需要

关于javascript - 我可以从 Vuex 中的 getters 进行调度吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com