1
0
Fork 0
Browse Source

vault backup: 2022-04-16 11:09:44

master
YuJian920 3 years ago
parent
commit
6b07ba2c67
  1. 5
      React 的源码深入/React Reconciler - Fiber 创建.md

5
React 的源码深入/React Reconciler - Fiber 创建.md

@ -15,10 +15,11 @@ createWorkInProgress 之后,Fiber 的操作就会交由 beginWork 和 complete @@ -15,10 +15,11 @@ createWorkInProgress 之后,Fiber 的操作就会交由 beginWork 和 complete
> beginWork 执行在递归节点的 Fiber 执行之前,主要是为传入的 Fiber 节点根据类型创建第一个子 Fiber 节点
首先会对 current 做空值判断,因为对于首屏渲染而言,当前传入的 current Fiber 节点是 FiberNode,所以是存在的,会进入 current !== null 的逻辑,然后会判断当前 Fiber 节点是否发生变化,判断的条件如下
首先会对 current 做空值判断,因为对于首屏渲染而言,当前传入的 current Fiber 节点是 FiberNode,所以是存在的,会进入 current !== null 的逻辑,然后会判断当前 Fiber 节点是否发生变化,然后赋值 didReceiveUpdate 做更新标识,判断的条件如下
1. 新旧 props 是否相同
2. Context 是否发生变化
3. Fiber 节点 type 发生变化
3. Fiber 节点 type 是否发生变化
在本次首屏渲染中,以上的条件都为否,会进入后续条件判断,在后续的条件判断中主要是为了应付一些特殊的场景,例如错误边界和 legacy 模式,具体可以看到官方留下的代码注释,在我们现在的场景下,最终会走到 didReceiveUpdate 为 false 的情况下,也就是当前 Fiber 并没有变化,因为在之前的 createWorkInProgress
### completeWork

Loading…
Cancel
Save