Skip to content

元素的卸载 ​

本节目标:理解“元素的卸载”的核心思路,并能把它用于实际开发或面试表达。 我们如果传入null的时候在渲染时,则是卸载逻辑,需要将dom节点删掉 render(null, container)

在renderer.ts的createRenderer的render方法中:
// vnode 虚拟dom
const render = (vnode, container) => {
  ==if== ==(====vnode== ====== ==null====)== =={==
    ==//== ==卸载逻辑==
    ==if== ==(====container====.====_vnode====)== =={==
      ==//== ==之前确实渲染过了,那么就卸载掉====dom==
      ==unmount====(====container====.====_vnode====);==
    ==}==
  ==}== else {
    // 这里既有初始化的逻辑,又有更新的逻辑
    patch(container._vnode || null, vnode, container)
  }
  container._vnode = vnode
  // 如果当前vnode是空的话
}
const unmount = (vnode) => {
  hostRemove(vnode.el);
}

本站总访问 — 次