请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

没太明白 render 函数这个定义 渲染的时候 给 vnode 就好了 那 删除直接 给null就知道 删的谁吗

正在回答 回答被采纳积分+3

1回答

Sunday 2022-11-02 14:41:00

你好

这个想要解释可能需要根据 vue 3 的 render 函数源码实现进行解释了。

https://img1.sycdn.imooc.com//szimg/636210af09ba612825480866.jpg

以上截图为 vue 3.2.37 的源码 render 函数截图,从该截图中可以看到当 vnode 为 null 时,会执行 unmount(卸载)函数,该函数会卸载 container._vnode (上次挂载的 vnode),从而达到删除旧节点的效果。

1 回复 有任何疑惑可以回复我~
  • 提问者 Muddyrain #1
    就是 因为我们 confirm message 这种 暂时性的组件 所以正好 可以 使用这个(技巧)来实现 刚挂载的节点 再几秒后就销毁时 会找就近挂载的节点进行删除 那我这中间如果又挂载其他组件是不是销毁的不是这个节点了
    回复 有任何疑惑可以回复我~ 2022-11-02 14:47:13
  • Sunday 回复 提问者 Muddyrain #2
    它的卸载是以 container 对象为核心的卸载,也就是说只需要维护 一个 container 挂载一个 vnode 的场景,那么就不会出现错误销毁的情况。
    回复 有任何疑惑可以回复我~ 2022-11-02 14:52:14
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号