Rufen Sie eine Aktion aus einer anderen Aktion heraus auf

133

Ich habe das folgende Setup für meine Aktionen:

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

Ich möchte in der Lage sein, eine Aktion von einer anderen aus aufzurufen. In diesem Beispiel möchte ich in der Lage sein, get2()von innen aufzurufen get1(). Ist das möglich und wenn ja, wie kann ich das machen?

muttley91
quelle

Antworten:

260

Sie haben Zugriff auf die dispatchMethode in dem Objekt, das im ersten Parameter übergeben wurde:

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

Dies wird in der Dokumentation behandelt .

danke: D
quelle
1
Gibt es eine Möglichkeit, etwas zu tun, wenn eine Aktion abgeschlossen ist? Verwenden Sie dies grundsätzlich mit einem then()?
muttley91
1
Ja, es ist vollständig in der Dokumentationsseite abgedeckt, die ich verlinkt habe
danke
3
Wie kann ich eine Aktion aus einem anderen Geschäft versenden? zB im Laden AI will machendispatch('B/someaction')
Guus
4

für Aktionen, für die keine Nutzlast erforderlich ist

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

für Aktionen, die Nutzdaten erfordern

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

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
Blenden
quelle