认识
2023年06月10日
一、认识
vm.$destroy()
负责完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令和事件监听器。在执行过程中会调用 beforeDestroy
和 destroy
两个钩子函数。在大多数业务开发场景下用不到该方法,一般都通过 v-if
指令来操作。其内部原理是:
-
调用
beforeDestroy
钩子函数 -
将自己从老爹肚子里(
$parent
)移除,从而销毁和老爹的关系 -
通过
watcher.teardown()
来移除依赖监听 -
通过
vm.__patch__(vnode, null)
方法来销毁节点 -
调用
destroyed
钩子函数 -
通过
vm.$off
方法移除所有的事件监听