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

JavaScript Vue.js

2020-04-07

小提琴:这里

我正在使用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存储的组件,因此我必须在其中一个组件中进行操作,这应该是哪个组件,以及它将如何影响其他组件。

第4052篇《我可以从Vuex中的吸气剂分派吗》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

1个回答
Mandy 2020.04.07

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

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

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

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android