Llamar a una acción desde otra acción

133

Tengo la siguiente configuración para mis acciones:

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

Quiero poder llamar a una acción desde dentro de otra, así que en este ejemplo quiero poder llamar get2()desde dentro get1(). ¿Es esto posible y, de ser así, cómo puedo hacerlo?

muttley91
fuente

Respuestas:

260

Tiene acceso al dispatchmétodo en el objeto pasado en el primer parámetro:

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

Esto está cubierto en la documentación .

gracias: D
fuente
1
¿Hay alguna manera de hacer algo una vez que se completa una acción? Básicamente usar esto con un then()?
muttley91
1
Sí, está completamente cubierto en la página de documentación que
vinculé
3
¿Cómo puedo enviar una acción desde otra tienda? por ejemplo, en la tienda que AI quiere hacerdispatch('B/someaction')
Guus
4

para acciones que no requieren carga útil

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

para acciones que requieren carga útil

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

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
Deslumbrar
fuente