vue.js - 命名空间模块可以处理对根命名空间的突变吗?
问题描述
考虑以下场景。
我有两个命名空间模块:moduleA
和moduleB
. 它们都遵循类似的模式:
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())
}
但是,现在正在处理的突变是:
moduleA
: moduleA
/SET_DATA, moduleA
/APP_RESET
moduleB
: moduleB
/SET_DATA, moduleB
/APP_RESET
是否可以设置我的命名空间模块,以便它们可以处理以下内容?
moduleA
: moduleA
/SET_DATA, APP_RESET
moduleB
: moduleB
/SET_DATA, APP_RESET
解决方案
我找到了我的答案。我没想到要在根命名空间上设置操作。例如
从非命名空间上下文:
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)
}
}
推荐阅读
- javascript - 将 onclick 函数添加到 JavaScript 中的按钮
- python - 与 django 的语义 UI 活动链接无法正常工作
- sql-server - 根据当前值按顺序返回上一个值和下一个值
- vim - 如何防止vim将空行归类为单词
- android - Post方法在android中返回400错误请求
- reactjs - 从函数调用 React 自定义 Hook
- javascript - React - 材质 UI | 找不到模块:无法解析“material-ui/Button”
- c# - C# 使用 DomainEvents 转换为接口类型
- c++ - 尽管 deviceQuery 测试通过,CUDA 程序仍无法正确执行
- c# - 仅在文本框上固定字符串长度而不在下拉菜单上,c#