เรียกการดำเนินการจากภายในการดำเนินการอื่น


136

ฉันมีการตั้งค่าต่อไปนี้สำหรับการกระทำของฉัน:

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

ฉันต้องการเรียกการกระทำหนึ่งจากภายในอีกรายการหนึ่งดังนั้นในตัวอย่างนี้ฉันต้องการสามารถเรียกget2()จากภายในget1()ได้ เป็นไปได้หรือไม่และถ้าเป็นเช่นนั้นฉันจะทำได้อย่างไร

คำตอบ:


266

คุณสามารถเข้าถึงdispatchวิธีการในวัตถุที่ส่งผ่านในพารามิเตอร์แรก:

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

นี้จะครอบคลุมในเอกสาร


1
มีวิธีดำเนินการบางอย่างเมื่อการกระทำเสร็จสมบูรณ์หรือไม่? โดยทั่วไปใช้สิ่งนี้กับthen()?
muttley91

1
ใช่มันครอบคลุมอย่างสมบูรณ์ในหน้าเอกสารที่ฉันเชื่อมโยง
ขอบคุณ

3
ฉันจะส่งสินค้าจากร้านค้าอื่นได้อย่างไร? เช่นในร้านที่ AI ต้องการทำdispatch('B/someaction')
Guus


4

สำหรับการกระทำที่ไม่ต้องการน้ำหนักบรรทุก

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

สำหรับการดำเนินการที่ต้องการน้ำหนักบรรทุก

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


0

เราสามารถส่งผ่านพารามิเตอร์ในขณะที่ส่ง

dispatch('fetchContacts', user.uid);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.