1
0
Fork 0
Browse Source

vault backup: 2022-04-20 11:10:31

master
YuJian 3 years ago
parent
commit
89fee2045b
  1. 7
      React 的源码深入/React Reconciler - Fiber 创建.md

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

@ -114,10 +114,13 @@ createInstance 会调用 createElement 方法创建一个 DOM 实例,并调用
- 如果出现旧 `props style` 有 style 样式,但是新 `props style` 没有的也就是新增样式的情况,那么会初始化 `styleUpdates` 对象为空(如果已经初始化过就会跳过),并在上边新增当前 style 属性的 key 并赋值空字符串 - 如果出现旧 `props style` 有 style 样式,但是新 `props style` 没有的也就是新增样式的情况,那么会初始化 `styleUpdates` 对象为空(如果已经初始化过就会跳过),并在上边新增当前 style 属性的 key 并赋值空字符串
- 开始遍历新 props style - 开始遍历新 props style
- 如果找到新 `props style` 属性存在,但是与旧 `props style` 属性不同,也就是样式发生修改的情况,那么会初始化 `styleUpdates` 对象为空(如果已经初始化过就会跳过),并在上边对当前 style 属性的 key 做新增或是修改,值为新 `props style` 属性 - 如果找到新 `props style` 属性存在,但是与旧 `props style` 属性不同,也就是样式发生修改的情况,那么会初始化 `styleUpdates` 对象为空(如果已经初始化过就会跳过),并在上边对当前 style 属性的 key 做新增或是修改,值为新 `props style` 属性
- 如果旧 `props` 不存在 style 属性或者等于 `null` - 如果旧 `props` 不存在 `style 属性` 或者等于 `null`
- 如果 `styleUpdates` 不为 `null`,且是数组时长度不等于 0,给 `updatePayload` `push``style``styleUpdates` - 如果 `styleUpdates` 不为 `null`,且是数组时长度不等于 0,给 `updatePayload` `push``style``styleUpdates`
- 否则给 `styleUpdates` 赋值 `props style` 属性 - 否则给 `styleUpdates` 赋值 `props style` 属性
- 当找到特殊属性 `dangerouslySetInnerHTML`
- 会与旧 props 的 `dangerouslySetInnerHTML` 对比,发生变化则 push 进 updatePayload 数组
- 当找到 children 属性,会将其转换为字符串和 属性名一起 `push``updatePayload`
-
## 第二次触发更新和后续触发更新 ## 第二次触发更新和后续触发更新

Loading…
Cancel
Save