@north_man

Почему при использовании динамической регистрации модулей в vuex появляется множественный запуск экшенов/мутаций?

Изучаю vue, возникла проблема с использованием динамического подключения модулей vuex.
Есть модуль который используется лишь в одной разделе приложения, повесил на хук роутера beforeRouteEnter регистрацию модуля, на хук beforeRouteLeave удаление модуля.
Сразу после регистрации вызывается экшен, который подгружает с сервера данные для подключенного модуля.
При первом входе в раздел все отрабатывает как надо. При последующих входах начинает расти количество вызовов экшена.
С чем может быть связано такое поведение?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@north_man Автор вопроса
Разобрался с проблемой.
Неправильно происходило удаление модуля.
В хуке beforeRouteEnter нет доступа до компонента через this, поэтому надо использовать next
beforeRouteEnter(to, from, next) {
      next((vm) => {
          // vm ссылается на компонент
      });
    },


Аналогично пробовал сделать и в хуке beforeRouteLeave для отключения модуля, но это не отрабатывало, не происходило удаление модуля. При каждом входе в раздел регистрировался дополнительный модуль, появлялся множественный вызов экшенов.
Внимательнее посмотрел в документации, оказалось что в beforeRouteLeave можно использовать this для работы с компонентом, переписал хук
beforeRouteLeave(to, from, next) {
      this.$store.unregisterModule(name);
      next();
    },

Теперь все отрабатывает как надо
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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