217 votes

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

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

E. g. Je vuex modules "terrain de jeu" et "notification". Les uns sont des espaces de. Je voudrais envoyer une action sur le terrain de jeu pour le module de notification.

Je pensais que je pouvais utiliser le nom du module dans l'expédition nom de l'action comme ceci:

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

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

Mais quand j'essaie de le faire j'ai des erreurs qui me font chose vuex est d'essayer d'envoi d'une action au sein de mon terrain de jeu du module:

[vuex] inconnu locale type d'action: notification/triggerSelfDismissingNotification, global type: terrain de jeu/notification/triggerSelfDismissingNotification

Est-il un moyen de l'envoi d'vuex un module à l'autre ou dois-je créer une sorte de pont dans la racine vuex exemple?

489voto

Jake Points 2018

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).

Cela suppose que vous définissiez namespaced: true sur votre module de magasin vuex.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X