Wywołaj akcję z poziomu innej akcji


135

Mam następującą konfigurację dla moich działań:

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

Chcę mieć możliwość wywołania jednej akcji z wnętrza drugiej, więc w tym przykładzie chcę mieć możliwość wywołania get2()od wewnątrz get1(). Czy to możliwe, a jeśli tak, jak mogę to zrobić?

Odpowiedzi:


261

Masz dostęp do dispatchmetody w obiekcie przekazanej w pierwszym parametrze:

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

Jest to omówione w dokumentacji .


1
Czy istnieje sposób na zrobienie czegoś po zakończeniu działania? Zasadniczo użyj tego z then()?
muttley91

1
Tak, jest to w pełni omówione na stronie dokumentacji, do której
dołączyłem

3
Jak mogę wysłać akcję z innego sklepu? np. w sklepie, który chce zrobićdispatch('B/someaction')
Guus


4

dla działań, które nie wymagają ładunku

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

dla działań, które wymagają ładunku

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
  }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.