Vue2/Typescript:是否可以@观察模块属性



我有一个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
}

最新更新