From ac446de38bbda7bcbec52a2800dceffa1c7400ea Mon Sep 17 00:00:00 2001 From: YuJian920 Date: Tue, 19 Apr 2022 22:57:33 +0800 Subject: [PATCH] vault backup: 2022-04-19 22:57:33 --- React 的源码深入/React Reconciler - Fiber 创建.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/React 的源码深入/React Reconciler - Fiber 创建.md b/React 的源码深入/React Reconciler - Fiber 创建.md index 1ccf14d..1dd2459 100644 --- a/React 的源码深入/React Reconciler - Fiber 创建.md +++ b/React 的源码深入/React Reconciler - Fiber 创建.md @@ -76,12 +76,12 @@ createInstance 会调用 createElement 方法创建一个 DOM 实例,并调用 ### updateHostComponent -函数内部会对当前 WorkInProgress Fiber 节点的新旧 props 进行对比,如果完全相同会直接返回,这里的完全相同实际上是指引用地址也相同,所以在本次就算新旧 props 相同也并会被 return,然后取出 Fiber 中的 stateNode 传递给 prepareUpdate 函数,然后被调用 diffProperties 函数,这里还有一个针对 props 的 children 属性是否为字符串huo - -### prepareUpdate +函数内部会对当前 WorkInProgress Fiber 节点的新旧 props 进行对比,如果完全相同会直接返回,这里的完全相同实际上是指引用地址也相同,所以在本次就算新旧 props 相同也并会被 return,然后取出 Fiber 中的 stateNode 传递给 prepareUpdate 函数,然后被调用 diffProperties 函数,这里还有一个针对 props 的 children 属性是否为字符串或者数字的判断,暂时还不清楚具体目的是什么 ### diffProperties +函数开始会先执行对 props 属性的校验方法:`validatePropertiesInDevelopment` 方法,然后根据 Fiber tag 进入不同的case,这里只有针对三种 tag有特殊的处理,分别是:input、select 和 textarea,本次进入 completeWork 的 Fiber 节点是 + ## 第二次触发更新和后续触发更新