Получить имя последней мутации, которая произошла в VueX - PullRequest
1 голос
/ 08 ноября 2019

Я использую модули VueX с пространством имен, и в каждом состоянии модуля есть обработчики, чтобы определить, завершен ли мой вызов API, вызывая мутацию с именем 'MODULENAME_LOADING'. Когда вызов API завершен, он запускает другие мутации, чтобы установить данные в состояние. Я хочу иметь возможность искать из родительского компонента макета, если в последнем коммите мутации есть слово «ЗАГРУЗКА», но не могу найти способ получить имя последней мутации.

Есть лиспособ проверить изнутри компонента, что было последней мутацией, или я должен обрабатывать каждый модуль отдельно?

1 Ответ

0 голосов
/ 08 ноября 2019

Vuex предлагает метод подписки , чтобы позволить представлению прослушивать мутации магазина (и подписывать действие для действий). Это выглядит так:

...
data() {
  return { 
    unsubFn: null,
    lastMutation: null
  }
},
mounted() {
  this.unsubFn = this.$store.subscribe((mutation, state) => {
    this.lastMutation = mutation.type;
  });
},
beforeDestroy() {
  if(this.unsubFn) {
    this.unsubFn();
  }
}
...

Вот базовый пример этого в действии: https://codepen.io/Qumez/pen/oNNyexB

Вызов подписки возвращает функцию, позволяющую вам отписаться, что вы абсолютно хотите сделатьчтобы избежать дублирования действий, возникающих при возникновении мутации. Я предпочитаю хранить его в функции data () и вызывать его в хуке beforeDestroy ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...