Вызов действия из другого действия


135

У меня следующие настройки для моих действий:

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

Я хочу иметь возможность вызывать одно действие изнутри другого, поэтому в этом примере я хочу иметь возможность вызывать get2()изнутри get1(). Возможно ли это, и если да, то как я могу это сделать?

Ответы:


265

У вас есть доступ к 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);
    }
}

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.