关于在声明周期函数中,设置的监听器销毁时机

来源:10-1 课程总结

匆匆又夏天丶

2021-06-07

老师,想问下在声明周期函数中设置的监听方法,会在组件销毁的时候自动销毁吗,我知道的是凡是绑定在组件上的事件是统一交给了vue去管理,在组件销毁的时候vue帮你自动处理,对vue api的形式调用的方式不知道vue有没有自动做这种处理

created() {
    this.unWatch1 = this.$watch(
      'query',
      debounce(300, newQuery => {
        this.$emit('update:modelValue', newQuery.trim())
      })
    )
    this.unWatch1 = this.$watch('modelValue', val => (this.query = val))
  }

是否还需要在 beforeDestroy 钩子函数中手动进行处理
如:

beforeDestroy() {
	this.unWatch1()
	this.this.unWatch2()
}
写回答

1回答

ustbhuangyi

2021-06-07

不管你是 $watch API,还是 watch options,都会创建 watcher,而 watcher 在创建的时候是会挂载到组件的 vm 实例上的

//img.mukewang.com/szimg/60be1cf809163d0009500096.jpg

然后在组件销毁的时候会自动销毁这些 watchers

//img.mukewang.com/szimg/60be1d120913042e11520274.jpg

$watch API 的灵活之处在于你可以随时去销毁这个 watcher 而不用等组件销毁

0
3
匆匆又夏天丶
回复
ustbhuangyi
好的好的
2021-06-08
共3条回复

Vue3开发企业级音乐Web App 明星讲师带你学大厂代码

慕课网明星讲师黄轶深度讲解 Vue3.0 ,提升的不止是Vue代码能力

2223 学习 · 1002 问题

查看课程