请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

reconcileChildrenArray里面有个疑问

let newIdx = 0;
如下代码

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

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

正在回答 回答被采纳积分+3

1回答

Jokcy 2021-01-18 21:15:58

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

0 回复 有任何疑惑可以回复我~
  • 提问者 躁动的胸大肌 #1
    oldFiber在当前这一次的调和的时候,不应该就是oldFiber.index = 0, oldFiber.index =1,...下一次渲染因为oldFiber是根据想要的顺序排列,下一次渲染的时候oldFiber的index感觉永远和顺序对应啊
    回复 有任何疑惑可以回复我~ 2021-01-18 21:21:56
  • Jokcy 回复 提问者 躁动的胸大肌 #2
    oldFiber是上一次的结果,创建节点之后节点是可以由使用者随意变动,所以在下一次重新渲染的时候并不能确认是否是之前的顺序
    回复 有任何疑惑可以回复我~ 2021-01-19 21:09:58

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信