从另一个动作中调用一个动作


133

我的动作有以下设置:

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

我希望能够从另一个内部调用一个动作,因此在此示例中,我希望能够get2()从内部调用get1()。这可能吗,如果可以,我该怎么做?

Answers:


260

您可以访问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);
    }
}

1
export actions = {
  GET_DATA (context) {
     // do stuff
     context.dispatch('GET_MORE_DATA');
  },

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.