首页 文章

有没有办法在两个命名空间的vuex模块之间分配操作?

提问于
浏览
53

是否可以在命名空间模块之间调度操作?

例如 . 我有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实例中创建某种桥接?

1 回答

  • 137

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

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

    现在,当调度到达根时,它将具有到通知模块的正确命名空间路径(相对于根实例) .

    假设您在vuex商店模块上设置了 namespaced: true .

相关问题