From 0e1a1c52b45becd163ca5ea98591a50455230f11 Mon Sep 17 00:00:00 2001 From: YuJian Date: Tue, 10 May 2022 15:57:24 +0800 Subject: [PATCH] vault backup: 2022-05-10 15:57:24 --- .../React 的深入探索 - beginWork.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/React 的源码深入/React 的流程解析 - Fiber 递归/React 的深入探索 - beginWork.md b/React 的源码深入/React 的流程解析 - Fiber 递归/React 的深入探索 - beginWork.md index 759e26f..1d27993 100644 --- a/React 的源码深入/React 的流程解析 - Fiber 递归/React 的深入探索 - beginWork.md +++ b/React 的源码深入/React 的流程解析 - Fiber 递归/React 的深入探索 - beginWork.md @@ -4,11 +4,18 @@ ```javascript function beginWork(current, workInProgress, renderLanes) { + + // 前 beginWork 阶段 if (current !== null) { ...... } else { ...... } + + // 正式 beginWork 阶段 + switch (workInProgress.tag) { + ...... + } } ``` @@ -16,12 +23,22 @@ beginWork 函数接受三个参数,分别是 current 节点,workInProgress ## 前 beginWork 阶段 -在进入正式 beginWork 阶段之前,会先对 current 节点进行空值判断,如果 current 节点不存在则表示在上一次的渲染当中不存在当前节点,会进入相对应的 current 为空的逻辑:didReceiveUpdate 赋值为 false +```javascript +if (current !== null) { + ...... +} else { + didReceiveUpdate = false; +} +``` + +在进入正式 beginWork 阶段之前,会先对传入的 current 节点进行空值判断,根据 current 是否为空进入不同的处理逻辑,这一段代码的主要目的是为了赋值 didReceiveUpdate 变量 ### current 不为空 ### current 为空 +didReceiveUpdate 赋值为 false + ## 正式 beginWork 阶段