just-react icon indicating copy to clipboard operation
just-react copied to clipboard

实现篇-多节点diff-Demo2中的lastPlacedIndex的值为什么是0?

Open AnathanPham opened this issue 5 years ago • 1 comments

实现篇-多节点diff-Demo2 Demo1中的新旧节点的对比,因为在遍历中第二次中断,所以lastPlacedIndex的值为a的索引0。

// 之前
abcd
// 之后
acdb

但是Demo2中遍历第一次就中断,lastPlacedIndex的值为何还是0呢?

AnathanPham avatar Oct 19 '20 06:10 AnathanPham

@AFu-1993 因为第二次遍历时候一个节点也没有,只能跟看他是不是第一个位置的元素,即从左起”第一位“(并不一定是dom索引index为0)开始比较,因为多dom的节点最左侧(索引最小值)只能是0,所以当第一次就立即跳出时,说明第一个元素位置就变了,但是第一个newFiber(3)必须跟一个最小值(0)比较然后更新lastPlacedIndex为3,后续newFiber跟3比较

guoenyue avatar Nov 30 '20 14:11 guoenyue