diff算法流程
2021-02-26 11:43:05 0 举报
diff算法
作者其他创作
大纲/内容
yes
oldSVnode移到oldEVnode后oldS后移一位,E前移一位
no
setter
都有子节点
while循环结束后,oldS>oldE,老节点比对完毕,addVnodes插入多余的新节点;S>E,新节点比对完,removeVnodes删除多余的老节点
Watcher
都有文本节点
createKeyToOldIdx
oldVnode有子节点,Vnode有
定义oldS、S、oldE、E分别是新老两个VNode的两边的索引;oldSVnode、SVnode、oldEVnode、EVnode 分别指向这几个索引对应的 VNode 节点。
老节点赋值undefinedSVnode插入到oldSVnode前S后移一位
创建新节点插入到parentEle子节点中S后移一位
update
创建新节点S后移一位
将Vnode子节点添加到el
notify
删除el子节点
oldVnode有子节点,Vnode没有
oldEVnode移到oldSVnode前oldE前移一位,S后移一位
是否符合SameNode
patchNode
updateChildren
是否通过相同key索引找到相同节点
Vnode替换oldVnode
patchVnode
isSameNode?
el的文本节点设置为Vnode的文本节点
0 条评论
下一页