命名空间模块可以处理根命名空间的变异吗?

时间:2019-02-14 06:00:48

标签: vue.js vuejs2 vuex vuex-modules

请考虑以下情形。

我有两个命名空间模块:moduleAmoduleB。它们都遵循类似的模式:

export default {
  namespaced: true,
  state: defaultState(),
  actions: {
    // ...
  },
  mutations: {
    [SET_DATA] (state, data) {
      state.data = data
    }
  }
}

然后,我希望能够通过一项操作来重置所有模块。我在根名称空间中提交了一个突变“ APP_RESET”:

commit(APP_RESET, null, { root: true})

在这一点上,我将在每个模块中添加以下内容:

[APP_RESET] (state) {
  Object.assign(state, defaultState())
}

但是,现在正在处理的突变是:

moduleAmoduleA / SET_DATA,moduleA / APP_RESET

moduleBmoduleB / SET_DATA,moduleB / APP_RESET

是否可以设置我的名称空间模块,使其可以处理以下内容?

moduleAmoduleA / SET_DATA,APP_RESET

moduleBmoduleB / SET_DATA,APP_RESET

1 个答案:

答案 0 :(得分:0)

我找到了答案。我不认为要在根名称空间上设置操作。例如

在非命名空间中:

dispatch(APP_RESET)

在我的每个模块中:

[APP_RESET]: {
    root: true,
    handler ({commit}) {
        commit(RESET_MODULE_A)
    }
}

在命名空间中:

dispatch(APP_RESET)

在我的每个模块中:

['namespaceOfDispatcherModule/' + APP_RESET]: {
    root: true,
    handler ({commit}) {
        commit(RESET_MODULE_A)
    }
}