Chamar uma ação de dentro de outra ação


133

Eu tenho a seguinte configuração para minhas ações:

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

Quero poder chamar uma ação de dentro de outra, portanto, neste exemplo, desejo poder chamar get2()de dentro get1(). Isso é possível e, se sim, como posso fazer isso?

Respostas:


260

Você tem acesso ao dispatchmétodo no objeto passado no primeiro parâmetro:

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

Isso é coberto na documentação .


1
Existe uma maneira de fazer algo depois que uma ação é concluída? Basicamente, use isso com um then()?
precisa saber é o seguinte

1
Sim, está totalmente coberto na página de documentação que eu
vinculei

3
Como posso despachar uma ação de outra loja? por exemplo, na loja que a AI quer fazer #dispatch('B/someaction')
Guus


4

para ações que não exigem carga útil

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

para ações que exigem carga útil

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
  }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.