Есть ли способ отправки действий между двумя модулями 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.