存储取消订阅与观察者

时间:2017-10-05 21:57:02

标签: vue.js vuejs2

从组件中收听商店中的getter的正确方法是什么?

是否应该使用手表,还是应该订购?

这就是我目前正在做的事情:

this.watcher_handle = this.$watch(() => {
    return this.$store.getters.someValue;
}, (new_value, old_value) => {
    // Do something cool
});

这两者有什么区别和优势?

1 个答案:

答案 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 propertieswatchers should be used之间的差异,基本上是由组件执行的异步或昂贵的操作 。我发现vuex方法与计算属性略有不同,但是当没有其他更好的方法存在时,点watch意味着使用。

订阅vuex方法的主要好处与您首先使用vuex的原因相同:商店的抽象和可预测数据流的实施。

在您的示例中,//Do something cool部分将被抽象到您的vuex函数中,这使得您的组件更简单,并且还可以使特定功能可重用。

为什么使用vuex作为商店,然后不使用其存取方法?我认为这与使用vue-router类似,但仍然在组件方法中进行URL操作。