Appearance
元素的卸载
本节目标:理解“元素的卸载”的核心思路,并能把它用于实际开发或面试表达。 我们如果传入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);
}