Render 渲染(Update 阶段)
- 同 Mount 阶段一样,也是有“递”和“归”两个阶段
“ 递阶段 ”
-
同 Mount 阶段不同的是,在 beginWork 办法中会进入
if (current !== null)
这一条件分支,外面会对此次构建的 Fibre 和上次的 Fibre 节点进行比拟if ( oldProps !== newProps || hasLegacyContextChanged() || (__DEV__ ? workInProgress.type !== current.type : false) )
- 会给 didReceiveUpdate 字段赋值,用于断定是否发生变化
- 如果 Fiber 节点前后无变动,则进入 bailoutOnAlreadyFinishedWork 办法
- 若没有满足条件,则进入 switch 语句,依据不同的 case 条件,执行不同的操作
- “ 递阶段图解 ”
“归阶段”
- 后续更新 …