just-react
just-react copied to clipboard
实现篇-多节点diff-Demo2中的lastPlacedIndex的值为什么是0?
实现篇-多节点diff-Demo2 Demo1中的新旧节点的对比,因为在遍历中第二次中断,所以lastPlacedIndex的值为a的索引0。
// 之前
abcd
// 之后
acdb
但是Demo2中遍历第一次就中断,lastPlacedIndex的值为何还是0呢?
@AFu-1993 因为第二次遍历时候一个节点也没有,只能跟看他是不是第一个位置的元素,即从左起”第一位“(并不一定是dom索引index为0)开始比较,因为多dom的节点最左侧(索引最小值)只能是0,所以当第一次就立即跳出时,说明第一个元素位置就变了,但是第一个newFiber(3)必须跟一个最小值(0)比较然后更新lastPlacedIndex为3,后续newFiber跟3比较