sga*_*dev 4 javascript vue.js vue-component vuejs2
正如许多人所知,Vue 支持使用声明性单文件组件 API 使用watch属性添加观察者,如下所示:
watch: {
// whenever question changes, this function will run
question: function (newQuestion, oldQuestion) {
this.answer = 'Waiting for you to stop typing...'
this.debouncedGetAnswer()
}
},
Run Code Online (Sandbox Code Playgroud)
我相对确定,按照这种方法,Vue 会负责对 component 进行清理destroyed()。但是,由于多种原因,我需要使用vm.$watchAPI 动态添加观察者,如下所示:
// keypath
vm.$watch('a.b.c', function (newVal, oldVal) {
// do something
})
Run Code Online (Sandbox Code Playgroud)
我知道该vm.$watch函数返回一个unwatch()我可以调用的函数,但我很好奇这是否对于避免内存泄漏等问题是非常必要的。我认为在组件被破坏时,这些观察者也应该停止存在,因为我认为这些观察者存在于组件实例上,但我不太确定。另外,Vue.js 文档或样式指南中没有提到不调用unwatch()可能会导致问题,这让我认为我真的不应该担心不调用unwatch()component destroyed()。
有人对这个问题有更确定的答案吗?
Cathrine我从具有 MVP 角色的用户的 VueLand Discord 中得到了以下回复。
它应该附加到您正在调用它的虚拟机上。因此,当虚拟机被销毁时,观察者也会被销毁。{...} 当您以编程方式创建观察者时,有一种方法可以以编程方式停止它是有意义的。哎呀,这就是它的唯一目的。
这一点,与 @Asimple 的回应相结合,似乎表明也许我不应该太担心这一点。感谢大家抽出时间
| 归档时间: |
|
| 查看次数: |
1673 次 |
| 最近记录: |