Javascript 如果我使用vm.$watch API,是否需要删除component destroyed()上的监视程序?

Javascript 如果我使用vm.$watch API,是否需要删除component destroyed()上的监视程序?,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,正如大家所知,Vue支持使用声明性单文件组件API和watch属性添加观察程序,如下所示: 观察:{ //当问题发生变化时,此函数将运行 问题:功能(新问题、旧问题){ this.answer='等待您停止键入…' 这个。debouncedGetAnswer() } }, 我相对确信,按照这种方法,Vue将负责清理组件destrocted()。但是,由于几个原因,我需要使用vm.$watchAPI动态添加观察程序,如下所示: //密钥路径 vm.$watch('a.b.c',函数(newVal

正如大家所知,Vue支持使用声明性单文件组件API和
watch
属性添加观察程序,如下所示:

观察:{
//当问题发生变化时,此函数将运行
问题:功能(新问题、旧问题){
this.answer='等待您停止键入…'
这个。debouncedGetAnswer()
}
},
我相对确信,按照这种方法,Vue将负责清理组件
destrocted()
。但是,由于几个原因,我需要使用
vm.$watch
API动态添加观察程序,如下所示:

//密钥路径
vm.$watch('a.b.c',函数(newVal,oldVal){
//做点什么
})
我知道,
vm.$watch
函数返回一个我可以调用的
unwatch()
函数,但我很好奇,这对于避免内存泄漏之类的事情是否非常必要。我认为在组件被破坏时,这些观察者也应该停止存在,因为我认为这些观察者存在于组件实例上,但我不确定。另外,Vue.js文档或样式指南中没有提到不调用
unwatch()
可能会导致问题,这让我觉得我真的不应该担心在组件
destrocted()
上不调用
unwatch()


有人对这个问题有更确切的答案吗?

我得到了来自MVP角色用户Cathrine的VueLand Discord的以下回应

它应该连接到您正在调用它的vm。因此,当虚拟机被销毁时,观察者也会被销毁。{…}当您以编程方式创建观察者时,有一种方式以编程方式停止它是有意义的。好了,这是唯一的目的


这一点,再加上@Asimple的回答,似乎表明我不应该对此太担心。谢谢大家抽出时间

大家都不认为这是一个正确的答案,但我认为Vue会自动删除观察者(在RU-Vue聊天中被问到)很有趣。。。这接近于我所寻找的,并且愿意授予正确答案标志,但是你认为你可以问RU Vue聊天室的那些人是否有任何证据证明这一点吗?它甚至可能只是Vue.js核心贡献者的一句话。如果您这样做,请将其添加为答案—实际上,这是VueJs contributor的答案。我也不想把它当作答案,因为这不是我的答案)足够公平!至少在尝试奖励某类代表时,向上投票。尽管如此,他们会很乐意奖励正确的答案分数。