是否有一种方法在两个命名空间的vuex模块之间分派动作?

是否有可能在命名空间的模块之间分派操作?

例如,我有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模块分派到另一个,或者我需要在根Vuex实例中创建某种桥接?

110277 次浏览

你只需要指定你从根上下文调度:

// from the gameboard.js vuex module
dispatch('notification/triggerSelfDismissingNotifcation', {...}, {root:true})

现在,当分派到达根节点时,它将拥有通知模块的正确名称空间路径(相对于根实例)。

这是假设你在Vuex存储模块上设置namespaced: true

dispatch(' mobileb /actionB', null, {root: true})