Memanggil tindakan dari dalam tindakan lain


135

Saya memiliki pengaturan berikut untuk tindakan saya:

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

Saya ingin dapat memanggil satu tindakan dari dalam yang lain, jadi dalam contoh ini saya ingin dapat memanggil get2()dari dalam get1(). Apakah ini mungkin, dan jika demikian, bagaimana saya bisa melakukannya?

Jawaban:


263

Anda memiliki akses ke dispatchmetode di objek yang diteruskan di parameter pertama:

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

Ini tercakup dalam dokumentasi .


1
Adakah cara untuk melakukan sesuatu setelah tindakan selesai? Pada dasarnya gunakan ini dengan then()?
muttley91

1
Ya, itu sepenuhnya tercakup di halaman dokumentasi yang saya
tautkan

3
Bagaimana cara mengirimkan tindakan dari toko lain? misalnya di toko AI ingin melakukandispatch('B/someaction')
Guus


4

untuk tindakan yang tidak membutuhkan muatan

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

untuk tindakan yang memang membutuhkan payload

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
  }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.