跳到主要内容

认识

2023年06月10日
柏拉文
越努力,越幸运

一、认识


vm.$destroy() 负责完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令和事件监听器。在执行过程中会调用 beforeDestroydestroy 两个钩子函数。在大多数业务开发场景下用不到该方法,一般都通过 v-if 指令来操作。其内部原理是:

  1. 调用 beforeDestroy 钩子函数

  2. 将自己从老爹肚子里($parent)移除,从而销毁和老爹的关系

  3. 通过 watcher.teardown() 来移除依赖监听

  4. 通过 vm.__patch__(vnode, null) 方法来销毁节点

  5. 调用 destroyed 钩子函数

  6. 通过 vm.$off 方法移除所有的事件监听

二、细节