全球 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) => {
})
您可以通过几种方式实现此目的:
在您手工创建的商店上使用 subscribe
,最有可能在 main.js
创建一个插件,附加到商店的每个实例并再次 subscribe
添加到它
直接使用vuex官方plugin进行日志记录
为了观看 getter,您可能需要手动修补 getters
属性。
再一次,如果你想观察 vuex 在开发过程中发生了什么,你可以使用 vuejs tools
我有一个 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) => { })
您可以通过几种方式实现此目的:
在您手工创建的商店上使用
subscribe
,最有可能在main.js
创建一个插件,附加到商店的每个实例并再次
subscribe
添加到它直接使用vuex官方plugin进行日志记录
为了观看 getter,您可能需要手动修补 getters
属性。
再一次,如果你想观察 vuex 在开发过程中发生了什么,你可以使用 vuejs tools