Есть ли способ отправки действий между двумя модулями vuex с расширением имен?

Можно ли отправить действие между модулями с расширением имен?

например. У меня есть vuex-модули "игровое поле" и "уведомление". Каждый из них именуется. Я хотел бы отправить действие с игрового поля в модуль уведомления.

Я думал, что могу использовать имя модуля в имени действия отправки следующим образом:

// store/modules/gameboard.js
const actions = {
    myaction ({dispatch}) {
        ...
        dispatch('notification/triggerSelfDismissingNotifcation', {...})
    }
}

// store/modules/notification.js
const actions = {
    triggerSelfDismissingNotification (context, payload) {
        ...
    }
}

Но когда я пытаюсь это сделать, я получаю ошибки, которые заставляют меня верить. vuex пытается отправить действие в моем модуле игрового поля:

[vuex] неизвестный локальный тип действия: уведомление /triggerSelfDismissingNotification, глобальный тип: gameboard/notification/triggerSelfDismissingNotification

Есть ли способ отправки из модуля vuex в модуль или мне нужно создать какой-то мост в корневом экземпляре vuex?

Ответы

Ответ 1

Вам просто нужно указать, что вы отправляете из корневого контекста:

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

Теперь, когда отправка достигнет корня, у него будет правильный путь пространства имен к модулю уведомлений (относительно корневого экземпляра).

Предполагается, что вы устанавливаете namespaced: true в своем модуле хранилища vuex.