在我的组件中,我订阅了数据存储区突变:
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();
},
它似乎正在发挥作用,但我不知道这是否应该如何完成。
答案 0 :(得分:1)
我相信这是预期的行为,因为当你有n
个组件订阅了商店突变时,你通常希望所有这些组件在发生突变时更新/做某事。否则,您应该在某些情况下有条件地添加订阅。当您destroy组件时,应该销毁所有事件侦听器。