vuejs2 / vuex:如何防止多次订阅突变?

时间:2017-10-08 14:24:46

标签: vuejs2 vuex

在我的组件中,我订阅了数据存储区突变:

mounted() {
    this.$dataStore.subscribe((mutation, state) => console.log(mutation));
},

但是,当我打开此视图/组件n次时,我获得了n个订阅,并且我看到了一个突变的多个日志条目。

我该怎样防止这种情况?为什么在加载新组件后不会删除订阅?

修改:我知道尝试了以下内容,因为subscribe函数返回unsubscribe函数:

 mounted() {
        this.unsub = this.$dataStore.subscribe((mutation, state) => console.log(mutation));
    },
    beforeDestroy() {
        this.unsub();
    },

它似乎正在发挥作用,但我不知道这是否应该如何完成。

1 个答案:

答案 0 :(得分:1)

我相信这是预期的行为,因为当你有n个组件订阅了商店突变时,你通常希望所有这些组件在发生突变时更新/做某事。否则,您应该在某些情况下有条件地添加订阅。当您destroy组件时,应该销毁所有事件侦听器。