15

我有一个具有以下状态的 Vuex 商店:

state: {
    authed: false,
    id: false
}

在组件内部,我想观察authed状态的变化并向服务器发送 AJAX 调用。它需要在各种组件中完成。

我尝试使用,但是当其中一个或更改store.watch()时会触发。我还注意到,它与您不能指定属性不同。当我尝试这样做时:idauthedvm.$watch

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

我收到了这个错误:

[vuex] store.watch only accepts a function.

任何帮助表示赞赏!

4

2 回答 2

31

只需为组件中的状态设置一个 getterauthed并观察该本地 getter:

watch: {
  'authed': function () {
    ...
  }
}
于 2016-10-03T15:25:15.270 回答
13

或者你可以使用...

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

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

于 2017-09-02T05:32:48.997 回答