web-dev-qa-db-fra.com

Existe-t-il un moyen de répartir les actions entre deux modules vuex de namespaced?

Est-il possible d'envoyer une action entre des modules de noms-espaces?

Par exemple. J'ai les modules vuex "gameboard" et "notification". Chacun sont des noms. J'aimerais envoyer une action du plateau de jeu au module de notification.

J'ai pensé que je pourrais utiliser le nom du module dans le nom de l'action de répartition comme ceci:

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

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

Mais lorsque j'essaie de faire cela, des erreurs me font penser que vuex tente d'envoyer une action dans mon module de jeu:

[vuex] type d'action local inconnu: notification/triggerSelfDismissingNotification, type global: gameboard/notification/triggerSelfDismissingNotification

Existe-t-il un moyen de passer d'un module vuex à un autre ou dois-je créer une sorte de pont dans l'instance racine de vuex?

95
Chris Schmitz

Il vous suffit de spécifier que vous expédiez à partir du contexte racine:

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

Désormais, lorsque la répartition atteindra la racine, le chemin de l’espace de nommage vers le module de notification sera correct (par rapport à l’instance racine).

En supposant que vous définissiez namespaced: true sur votre module de magasin vuex.

223
Jake