From eb9e91a42526bf5014ea367d5cb5d7506f125de8 Mon Sep 17 00:00:00 2001 From: YuJian920 Date: Sat, 16 Apr 2022 11:19:44 +0800 Subject: [PATCH] vault backup: 2022-04-16 11:19:44 --- React 的源码深入/React Reconciler - Fiber 创建.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/React 的源码深入/React Reconciler - Fiber 创建.md b/React 的源码深入/React Reconciler - Fiber 创建.md index 063bc1b..bcb75f5 100644 --- a/React 的源码深入/React Reconciler - Fiber 创建.md +++ b/React 的源码深入/React Reconciler - Fiber 创建.md @@ -21,7 +21,9 @@ createWorkInProgress 之后,Fiber 的操作就会交由 beginWork 和 complete 3. Fiber 节点 type 是否发生变化 在本次首屏渲染中,以上的条件都为否,会进入后续条件判断,在后续的条件判断中主要是为了应付一些特殊的场景,例如错误边界和 legacy 模式,具体可以看到官方留下的代码注释,在我们现在的场景下,最终会走到 didReceiveUpdate 为 false 的情况下,也就是当前 Fiber 并没有变化,因为在之前的 createWorkInProgress 中 WorkFiberProgress 被赋值上了 current Fiber 的同名属性,所以它们会是相同的两个 FIber 节点,在这里的代码可以看到:beginWork 中还有对优先值 lanes 的一些处理,在这里先不展开,后续再补充 最后会走入 switch 环节,这了主要根据传入的 WorkInProgress Fiber 节点的类型进入不同的处理逻辑,这也是 beginWork 最主要的任务:为当前 WorkInProgress Fiber 节点创建它的第一个 Fiber 子节点,其内部根据 Fiber 的 tag 不同有对应的: -- +- updateClassComponent 处理 Class Component +- updateHostComponent 处理 Host Component +- updateSuspenseComponent 处理 Suspense Component ### completeWork