是否可以在命名空间模块之间调度操作?
E.g。我有vuex模块“gameboard”和“notification”。每个都是命名空间。我想从游戏板向通知模块发送一个动作。
我以为我可以在调度操作名称中使用模块名称,如下所示:
// store/modules/gameboard.js
const actions = {
myaction ({dispatch}) {
...
dispatch('notification/triggerSelfDismissingNotifcation', {...})
}
}
// store/modules/notification.js
const actions = {
triggerSelfDismissingNotification (context, payload) {
...
}
}
但是当我尝试这样做时,我得到的错误让我觉得vuex试图在我的游戏板模块中发送一个动作:
[vuex]未知的本地操作类型:notification / triggerSelfDismissingNotification,全局类型:gameboard / notification / triggerSelfDismissingNotification
有没有办法从vuex模块调度到模块,还是需要在root vuex实例中创建某种桥?
答案 0 :(得分:194)
您只需要指定从根上下文调度:
// from the gameboard.js vuex module
dispatch('notification/triggerSelfDismissingNotifcation', {...}, {root:true})
现在,当调度到达根时,它将具有通知模块的正确命名空间路径(相对于根实例)。
假设您在vuex商店模块上设置了namespaced: true
。