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?

muttley91
sumber

Jawaban:

263

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

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

Ini tercakup dalam dokumentasi .

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

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
Mempesona
sumber