reconcileChildrenArray里面有个疑问

来源:5-4 reconcilerChildren-array

躁动的胸大肌

2021-01-17

let newIdx = 0;
如下代码

if (oldFiber.index > newIdx) {
        nextOldFiber = oldFiber;
        oldFiber = null;
      } else {
        nextOldFiber = oldFiber.sibling;
      }

我寻思着oldFiber.index的值不应该是按照顺序递增的嘛,第一个fiber.index =0,第二个fiber.index=1,应该和newIdx的值相同啊

写回答

1回答

Jokcy

2021-01-18

oldFiber一开始生成的时候确实应该是按照顺序的,但是你后面用的时候可能会改变每个节点的顺序的

0
2
Jokcy
回复
躁动的胸大肌
oldFiber是上一次的结果,创建节点之后节点是可以由使用者随意变动,所以在下一次重新渲染的时候并不能确认是否是之前的顺序
2021-01-19
共2条回复

React源码深度解析 高级前端工程师必备技能

掌握React源码,让你的开发水平没有上限,更不惧前端未来的到来

1749 学习 · 336 问题

查看课程