web-dev-qa-db-fra.com

Changer le statut d'un autre module d'un module dans Vuex

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?

32
Fizer Khan

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 })
59
Saurabh

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
    }
  }
}
2
Julien