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

135

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

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

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

muttley91
источник

Ответы:

265

У вас есть доступ к dispatchметоду в объекте, переданном в первом параметре:

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

Это описано в документации .

Спасибо д
источник
1
Есть ли способ что-то сделать после завершения действия? В основном используйте это с then()?
muttley91
1
Да, это полностью
указал
3
Как я могу отправить действие из другого магазина? например, в магазине AI хочу сделатьdispatch('B/someaction')
Guus
3
@Guus stackoverflow.com/questions/42984132/…
поблагодарил
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);
    }
}
ANinJa
источник
1
export actions = {
  GET_DATA (context) {
     // do stuff
     context.dispatch('GET_MORE_DATA');
  },

  GET_MORE_DATA (context) {
    // do more stuff
  }
}
ослепление
источник