Chiama un'azione dall'interno di un'altra azione


135

Ho la seguente configurazione per le mie azioni:

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

Voglio essere in grado di chiamare un'azione dall'interno di un'altra, quindi in questo esempio voglio essere in grado di chiamare get2()dall'interno get1(). È possibile e, in tal caso, come posso farlo?

Risposte:


264

Hai accesso al dispatchmetodo nell'oggetto passato nel primo parametro:

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

Questo è trattato nella documentazione .


1
C'è un modo per fare qualcosa una volta completata un'azione? Fondamentalmente usalo con un then()?
muttley91

1
Sì, è completamente coperto nella pagina della documentazione che ho collegato
grazie

3
Come posso inviare un'azione da un altro negozio? ad esempio nel negozio che voglio faredispatch('B/someaction')
Guus


4

per azioni che non richiedono payload

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

per azioni che richiedono un carico utile

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

1
export actions = {
  GET_DATA (context) {
     // do stuff
     context.dispatch('GET_MORE_DATA');
  },

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.