从组件中收听商店中的getter的正确方法是什么?
是否应该使用手表,还是应该订购?
这就是我目前正在做的事情:
this.watcher_handle = this.$watch(() => {
return this.$store.getters.someValue;
}, (new_value, old_value) => {
// Do something cool
});
这两者有什么区别和优势?
答案 0 :(得分:1)
根据documentation您想要做的事情。
import { mapGetters } from 'vuex'
export default {
// ...
computed: {
// mix the getters into computed with object spread operator
...mapGetters([
'doneTodosCount',
'anotherGetter',
// ...
])
}
}
这将是“正确的方式”。
vue文档讨论了watchers and computed properties和watchers should be used之间的差异,基本上是由组件执行的异步或昂贵的操作 。我发现vuex方法与计算属性略有不同,但是当没有其他更好的方法存在时,点watch
意味着使用。
订阅vuex方法的主要好处与您首先使用vuex的原因相同:商店的抽象和可预测数据流的实施。
在您的示例中,//Do something cool
部分将被抽象到您的vuex函数中,这使得您的组件更简单,并且还可以使特定功能可重用。
为什么使用vuex作为商店,然后不使用其存取方法?我认为这与使用vue-router类似,但仍然在组件方法中进行URL操作。