我有一个Vue2 Typescript项目,我想在存储的子模块中的属性上使用vue-property-decorator
的@Watch
来对突变做出反应。正确的方法是什么?使用点符号(不起作用,但我尝试过@Watch('this.$store.state.myModule.myProperty')
——可能语法错误?(是否足够,或者我需要一个单独的计算函数或显式存储级观察程序?
值得一提的是:顶级存储属性上的@Watch
似乎可以工作,如果我试图通过存储getter(即@Watch(this.$store.getters['myModule/property'])
(访问@Watch
,我会收到一个错误。
因此,诀窍是不要直接观察属性,而是通过mapState
助手将其作为计算属性引入:
@Component({
computed: {
...mapState<ModuleType>("MyModule", {
myProperty: (state: ModuleType) => state.myProperty
})
}
})
然后我可以看:
@Watch('myProperty')
myMethod(value: MyPropertyType) {
// ... do stuff
}