1

在我的 vuex 模块中,对于每个操作,我需要从根状态获取相同的值。因此我这样做:

export const actions = {

    action1({ commit, rootState }, payload) {
        const companyId = rootState.userProfile.companyId;
        ....
    },
    action2({ rootState }, payload) {
        const companyId = rootState.userProfile.companyId;
        ....
    },
    ....

}

有没有办法在模块中只声明一次这个常量,而不是重复

const companyId = rootState.userProfile.companyId;

在每个动作中?

4

1 回答 1

1

您可以在模块文件中导入您的商店并创建一个 getter 来获取companyId.

不使用 getter 将导致companyId只设置一次并且无法在操作运行时获得实际值:

import store from './index.js'

const companyId = () => store.state.userProfile.companyId

export const actions = {

    action1({ commit }, payload) {
        commit('doSomething', companyId())
        ...
    },
    action2({ }, payload) {
        ...
    },
    ...

}

你也可以在你的模块中创建一个 getter 来获取companyId

export const actions = {

  action1({ getters }, payload) {
    console.log(getters.companyId)
  }
}

export const getters = {
  companyId (state, getters, rootState) {
    return rootState.userProfile.companyId
  }
}
于 2019-01-29T10:49:36.107 回答