|
|
@ -52,6 +52,10 @@ completeWork 负责深度优先遍历中的回溯阶段,**它执行在递归 |
|
|
|
|
|
|
|
|
|
|
|
如果最终回溯到了 Fiber 的起始节点,那么整个首屏渲染的 Fiber 递归渲染逻辑就完成了,最后会交由 commitRoot 函数进入 commit 阶段将其渲染到页面上 |
|
|
|
如果最终回溯到了 Fiber 的起始节点,那么整个首屏渲染的 Fiber 递归渲染逻辑就完成了,最后会交由 commitRoot 函数进入 commit 阶段将其渲染到页面上 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这里你可以会有一个疑惑,在 Fiber 递归阶段也就是 reconciler 阶段,会深度优先遍历找出所有的存在变化的 Fiber 节点,并将其打上对应的 effectTag,**那么进入 commit 阶段后,也需要再次进行一次深度优先遍历找出这些存在 effectTag 的 Fiber 节点吗?** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
其实是不需要的,因为这样的效率太低了,在深度优先遍历的回溯阶段也就是 completeWork 的执行逻辑中,会将所有存在 effectTag 的 Fiber 节点通过链表的xian'sh |
|
|
|
|
|
|
|
|
|
|
|
[[React 的流程解析 - commit阶段]] |
|
|
|
[[React 的流程解析 - commit阶段]] |
|
|
|
|
|
|
|
|
|
|
|
## 第一次触发更新 |
|
|
|
## 第一次触发更新 |
|
|
|