Выдавать событие при изменении определенного состояния в хранилище vuex

#vue.js #vuex

#vue.js #vuex

Вопрос:

У меня есть магазин Vuex со следующим состоянием:

 state: {
    authed: false,
    id: false
}
  

Внутри компонента я хочу отслеживать изменения authed состояния и отправлять AJAX-вызов на сервер. Это должно быть сделано в различных компонентах.

Я пробовал использовать store.watch() , но это срабатывает при id authed изменении либо или. Я также заметил, что это отличается от vm.$watch того, что вы не можете указать свойство. Когда я попытался это сделать:

 store.watch('authed', function(newValue, oldValue){
  //some code
});
  

Я получил эту ошибку:

[vuex] store.watch only accepts a function.

Любая помощь приветствуется!

Ответ №1:

Просто установите геттер для authed состояния в вашем компоненте и следите за этим локальным геттером:

 watch: {
  'authed': function () {
    ...
  }
}
  

Ответ №2:

Или вы можете использовать …

 let suscribe = store.subscribe((mutation, state) => {
  console.log(mutation.type)
  console.log(mutation.payload)
})
// call suscribe() for unsuscribe
  

https://vuex.vuejs.org/api/#subscribe