Gọi một hành động từ bên trong một hành động khác


133

Tôi có các thiết lập sau cho hành động của mình:

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

Tôi muốn có thể gọi một hành động từ bên trong hành động khác, vì vậy trong ví dụ này tôi muốn có thể gọi get2()từ bên trong get1(). Điều này là có thể, và nếu vậy, làm thế nào tôi có thể làm điều đó?

Câu trả lời:


260

Bạn có quyền truy cập vào dispatchphương thức trong đối tượng được truyền trong tham số đầu tiên:

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

Điều này được đề cập trong các tài liệu .


1
Có cách nào để làm một cái gì đó sau khi một hành động hoàn thành? Về cơ bản sử dụng này với một then()?
muttley91

1
Đúng, nó được trình bày đầy đủ trong trang tài liệu tôi đã liên kết
cảm ơn

3
Làm thế nào tôi có thể gửi một hành động từ một cửa hàng khác? ví dụ: trong cửa hàng AI muốn làmdispatch('B/someaction')
Guus


4

cho các hành động không yêu cầu tải trọng

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

cho các hành động yêu cầu tải trọng

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
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.