全球 vuex 观察者

Global vuex watchers

我有一个 Vuex 商店,在一个有点大的 Web 应用程序中提供许多 Vue 组件。我希望能够出于日志目的查看 Vuex 状态或吸气剂。但是,我希望能够观看它们 'globally',即不依赖任何特定的 Vue 组件。这排除了像

这样的技巧
//aComponent.vue
watch:{ '$store.state.data'(value, oldValue) { /*do something here*/ }}

//App.vue
created() {
  this.$store.watch((state) => state.watchedState) => {/*do something here*/ })
}

相反,我正在寻找一种方法来直接从定义商店的模块中观察我的 Vuex 状态或 getter,这样每当状态发生变化时,我都可以调用一个函数将它作为参数传递给旧状态和新状态,以便将更改写入数据库(理想情况下,更改本身会被自动检测到,如 Vue 的 watch(new,old) {...}.

我想我应该为此使用 Vuex 本地方法 store.watch()。但到目前为止,我还无法按需要从商店模块调用它。

有线索吗?还是我错过了什么,而我正在尝试做的事情使用不同的技术也能同样有效地完成?

要观看突变,您可以选择此选项。

您可以 subscribe 到商店并在发生变化后收到通知。

store.subscribe( (mutation, state) => { })

您可以通过几种方式实现此目的:

  1. 在您手工创建的商店上使用 subscribe,最有可能在 main.js

  2. 创建一个插件,附加到商店的每个实例并再次 subscribe 添加到它

  3. 直接使用vuex官方plugin进行日志记录

为了观看 getter,您可能需要手动修补 getters 属性。

再一次,如果你想观察 vuex 在开发过程中发生了什么,你可以使用 vuejs tools