patch更新流程
2021-08-01 18:09:14 0 举报
patch更新流程
作者其他创作
大纲/内容
旧节点更新为对应文本节点
否
旧节点为文本节点,清除文本
执行update钩子
新旧节点均没有子节点
新旧节点存在子节点?
是
新旧节点完全相同?
removeVnodes清空旧节点
旧子节点的末尾节点和新子节点的起始节点相同?
执行prepatch钩子更新组件options
patchVnode
新旧节点均存在子节点
更新完成
只有旧节点有子节点
更新insert钩子
找到新子节点的起始节点对于的旧节点,找到则插入,找不到则创建一个新节点。
删除多余的旧子节点
新节点为组件节点?
patch更新
updateChildren
清空旧节点,addVnodes插入新节点子节点
新子节点的个数多余旧子节点?
更新父占位节点
创建多的新子节点并插入DOM
新旧节点是否相同(sameVnode))
新旧子节点的起始节点相同?
createElm创建新节点
移除旧节点(removeVnodes)
新节点是文本节点?
旧子节点的起始节点于新节点的末尾相同?
只有新节点存在子节点
新旧子节点的末尾节点相同?
0 条评论
回复 删除
下一页