From c746656f914d7d4f1bdbf56200f792eed74daf9e Mon Sep 17 00:00:00 2001 From: YuJian Date: Wed, 20 Apr 2022 10:40:31 +0800 Subject: [PATCH] vault backup: 2022-04-20 10:40:31 --- React 的源码深入/React Reconciler - Fiber 创建.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/React 的源码深入/React Reconciler - Fiber 创建.md b/React 的源码深入/React Reconciler - Fiber 创建.md index ca9e8ad..8af7389 100644 --- a/React 的源码深入/React Reconciler - Fiber 创建.md +++ b/React 的源码深入/React Reconciler - Fiber 创建.md @@ -96,7 +96,7 @@ createInstance 会调用 createElement 方法创建一个 DOM 实例,并调用 1. 新 props 自身不存在相同属性 2. 属性非旧 props 自身属性 3. 该属性在旧 props 的值为 null -- 当找到 style 属性,会遍历 style 属性,初始化 styleUpdates 对象为空,并在上边新增 style 属性的 key 并赋值空字符串 +- 当找到 style 属性,会遍历 style 属性,初始化 `styleUpdates` 对象为空,并在上边新增当前 style 属性的 key 并赋值空字符串 - 当找到一些特殊属性如 `dangerouslySetInnerHTML` 等,会初始化 `updatePayload` 为空数组 - 如果没有以上属性,即没有 style 和 特殊属性,会进入最后的 else 逻辑:给 `updatePayload` 数组 `push` 进属性名和 null,进入下一轮循环 @@ -108,7 +108,7 @@ createInstance 会调用 createElement 方法创建一个 DOM 实例,并调用 - 当找到 style 属性: - 如果新 props 属性值存在且值合法(就是转换成 boolean 不为 false),会调用 Object.freeze 函数冻结当前属性值 - 开始遍历旧 props - - + - 如果出现旧 props style 有 style 样式,但是新 props style 没有的情况,那么会初始化 `styleUpdates` 对象为空(如果在循环旧 props 时已经初始化过就会跳过),并在上边新增当前 style 属性的 key 并赋值空字符串 ## 第二次触发更新和后续触发更新