|
|
@ -54,7 +54,7 @@ completeWork 负责深度优先遍历中的回溯阶段,**它执行在递归 |
|
|
|
|
|
|
|
|
|
|
|
这里你可以会有一个疑惑,在 Fiber 递归阶段也就是 reconciler 阶段,会深度优先遍历找出所有的存在变化的 Fiber 节点,并将其打上对应的 effectTag,**那么进入 commit 阶段后,也需要再次进行一次深度优先遍历找出这些存在 effectTag 的 Fiber 节点吗?** |
|
|
|
这里你可以会有一个疑惑,在 Fiber 递归阶段也就是 reconciler 阶段,会深度优先遍历找出所有的存在变化的 Fiber 节点,并将其打上对应的 effectTag,**那么进入 commit 阶段后,也需要再次进行一次深度优先遍历找出这些存在 effectTag 的 Fiber 节点吗?** |
|
|
|
|
|
|
|
|
|
|
|
其实是不需要的,因为这样的效率太低了,在深度优先遍历的回溯阶段也就是 completeWork 的执行逻辑中,会将所有存在 effectTag 的 Fiber 节点通过链表的xian'sh |
|
|
|
其实是不需要的,因为这样的效率太低了,在深度优先遍历的回溯阶段也就是 completeWork 的执行逻辑中,会将所有存在 effectTag 的 Fiber 节点通过单项链表的形式连接起来,这样在 commit 阶段的时候只需要遍历这一条链表就能快速的找到发生了变化的 Fiber 节点:[[effectList 的生成]] |
|
|
|
|
|
|
|
|
|
|
|
[[React 的流程解析 - commit阶段]] |
|
|
|
[[React 的流程解析 - commit阶段]] |
|
|
|
|
|
|
|
|
|
|
|