Appeler une action depuis une autre action

135

J'ai la configuration suivante pour mes actions:

get1: ({commit}) => {
  //things
  this.get2(); //this is my question!
},
get2: ({commit}) => {
  //things
},

Je veux pouvoir appeler une action de l'intérieur d'une autre, donc dans cet exemple, je veux pouvoir appeler get2()de l'intérieur get1(). Est-ce possible, et si oui, comment puis-je le faire?

muttley91
la source

Réponses:

265

Vous avez accès à la dispatchméthode dans l'objet passé dans le premier paramètre:

get1: ({ commit, dispatch }) => {
  dispatch('get2');
},

Ceci est couvert dans la documentation .

merci: D
la source
1
Existe-t-il un moyen de faire quelque chose une fois qu'une action est terminée? En gros, utilisez ceci avec un then()?
muttley91
1
Oui, c'est entièrement couvert dans la page de documentation que j'ai liée
merci
3
Comment puis-je envoyer une action depuis un autre magasin? par exemple en magasin AI veux fairedispatch('B/someaction')
Guus
4

pour les actions qui ne nécessitent pas de charge utile

actions: {
    BEFORE: async (context, payload) => {
    },
    AFTER: async (context, payload) => {
        await context.dispatch('BEFORE');
    }
}

pour les actions qui nécessitent une charge utile

actions: {
    BEFORE: async (context, payload) => {
    },
    AFTER: async (context, payload) => {
        var payload = {}//prepare payload
        await context.dispatch('BEFORE', payload);
    }
}
ANinJa
la source
1
export actions = {
  GET_DATA (context) {
     // do stuff
     context.dispatch('GET_MORE_DATA');
  },

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
Éblouir
la source