@danilr

Как выполнить код после завершения действия?

Во vuex выполняется запрос, при ответе сервера мне нужно вызвать izitoaster (попап с инфой все ок или нет), как мне сообщили, из самого vuex его вызывать нельзя, поэтому надо как-то с помощью promise вызвать izitoast из метода компонента, где вызывается действие. Как это сделать?

Вот во vuex:

setEditNewGroup(context, formGroupData) {
      HTTP.post(Routes.saveGroupNewEdit, formGroupData)
        .then(({ data }) => {
          console.log(formGroupData)
          // if (!formGroupData.id){
            context.commit('getNewAddGroup', {
              data: data,
              formGroupData: formGroupData
            })
          // }
        })
        .catch(error => {
          // this.$toast.error('Ошибка загрузки данных. Попробуйте ещё раз')
          console.error(error);
        })
    }

Вот код в компоненте:

handleSaveGroup(){

      this.$store.dispatch('administration/setEditNewGroup', this.formGroupData)
    }
  • Вопрос задан
  • 293 просмотра
Решения вопроса 2
0xD34F
@0xD34F
Читаем документацию внимательнее:

Первое, что нужно знать — store.dispatch может обрабатывать Promise, возвращаемый обработчиком действия, и также возвращает Promise

Возвращаете из своего действия промис - then - вызываете что там вам надо.
Ответ написан
0xD34F прав на все 100%.
А уж если разжёвывать, то в вашем случае это можно или так:
this.$store.dispatch('administration/setEditNewGroup', this.formGroupData).then(() => {
// Здесь вставить код, что всё ок
}).catch((error) => {
// Обработка ошибки
})


Или через асинки:
async handleSaveGroup(){
try {
      await this.$store.dispatch('administration/setEditNewGroup', this.formGroupData);
// Здесь вставить код, что всё ок
}
catch (error) {
// Обработка ошибки
}
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы