为什么要cloneChildFibers

来源:5-1 入口和优化

cyabonc

2020-04-25

bailoutOnAlreadyFinishedWork里面为什么要cloneChildFibers。不能直接用现有的fiber吗

写回答

2回答

qq_漫笔_0

2021-08-05

bailoutOnAlreadyFinishedWork的cloneChildFibers目的是创建workInProgress.child,创建workInProgress fiber 又怎么可以直接使用 current fiber呢,这不相互影响了吗?

可中断更新,被中断的上次更新保存在current fiber上,继续构建workInProgress fiber tree,完成渲染 current指向workInProgress,在进行下次更新时, 上次更新的 current 变成 workInProgress,就可以利用保存的数据继续上一次的更新。

0
1
weixin_慕的地0476602
被中断的上次更新保存在current fiber上,这在哪里体现出来?我以为current fiber就是上次完成render阶段的wipFiber的拷贝
2022-11-12
共1条回复

Jokcy

2020-11-25

因为bailout的时候需要让之前的更新回退,但也不希望这些更新就直接消失了,所以clone一份进行暂存

0
0

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

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

1749 学习 · 336 问题

查看课程