J'ai deux modules dans mon magasin vuex.
var store = new Vuex.Store({
modules: {
loading: loading
posts: posts
}
});
Dans le module loading
, j'ai une propriété saving
qui peut être définie soit true
ou false
et qui possède également une fonction de mutation nommée TOGGLE_SAVING
pour définir cette propriété.
Dans le module posts
, avant et après la récupération des publications, je souhaite modifier la propriété saving
. Je le fais en appelant commit('TOGGLE_SAVING')
à partir d'une des actions du module posts
.
var getPosts = function (context) {
contex.commit(TOGGLE_LOADING);
};
Quand il a essayé de commettre, j'ai eu l'erreur suivante dans la console
[vuex] unknown local mutation type: TOGGLE_LOADING, global type: posts/TOGGLE_LOADING
Comment puis-je muter l'état dans un autre module en utilisant commit
?
Essayez-le avec les paramètres suivants comme suggéré ici ;
commit('TOGGLE_LOADING', null, { root: true })
Si vous avez namespaced
défini sur true (dans Nuxt, c'est la valeur par défaut en mode modules), ceci devient:
commit('loading/TOGGLE_LOADING', null, { root: true })
vous pouvez utiliser action pour commettre la mutation définie dans un autre module, puis vous modifierez l'état dans un autre module.
comme ça:
posts: {
actions: {
toggleSavingActions(context) {
// some actions
context.commit("TOGGLE_SAVING"); // defined in loading module
}
}
}