1
0
Fork 0
Browse Source

vault backup: 2022-06-28 14:52:05

master
YuJian 2 years ago
parent
commit
a7d9e42708
  1. 13
      React 的深入探索/React 的流程解析 - Fiber 递归/React 的深入探索 - beginWork.md

13
React 的深入探索/React 的流程解析 - Fiber 递归/React 的深入探索 - beginWork.md

@ -100,12 +100,9 @@ if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) { @@ -100,12 +100,9 @@ if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {
}
```
### current 为空
首先 didReceiveUpdate 会被赋值为 false
紧接着会进入一个似乎关于 SSR 服务端渲染的判断逻辑,代码内容如下,这一段代码的行为还不清楚,暂时先跳过
首先 didReceiveUpdate 会被赋值为 false,紧接着会进入一个似乎关于 SSR 服务端渲染的判断逻辑,代码内容如下,这一段代码的行为还不清楚,暂时先跳过
```javascript
didReceiveUpdate = false;
@ -125,6 +122,14 @@ if (getIsHydrating() && isForkedChild(workInProgress)) { @@ -125,6 +122,14 @@ if (getIsHydrating() && isForkedChild(workInProgress)) {
## 正式 beginWork 阶段
```javascript
workInProgress.lanes = NoLanes;
switch (workInProgress.tag) {
case IndeterminateComponent:
.
}
```
在本次首屏渲染中,以上的条件都为否,会进入后续条件判断,在后续的条件判断中主要是为了应付一些特殊的场景,例如错误边界和 legacy 模式,可以看到官方留下的代码注释,在我们现在的场景下,最终会走到 didReceiveUpdate 为 false 的情况下,也就是当前 Fiber 并没有变化,因为在之前的 createWorkInProgress 中 WorkFiberProgress 被赋值上了 current Fiber 的同名属性,所以它们会是相同的两个 FIber 节点,在这里的代码可以看到:beginWork 中还有对优先值 lanes 的一些处理,在这里先不展开,后续再补充

Loading…
Cancel
Save