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?

muttley91
fonte

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 .

obrigado
fonte
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);
    }
}
ANinJa
fonte
1
export actions = {
  GET_DATA (context) {
     // do stuff
     context.dispatch('GET_MORE_DATA');
  },

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