1
0
Fork 0
Browse Source

vault backup: 2022-04-13 10:29:28

master
YuJian 3 years ago
parent
commit
b6b3f6630f
  1. 6
      自顶向下学 React 源码/React 源码的碎片记录.md

6
自顶向下学 React 源码/React 源码的碎片记录.md

@ -16,5 +16,7 @@
- 对于首屏渲染来说,只有根节点具有 current Fiber 而子节点不存在 - 对于首屏渲染来说,只有根节点具有 current Fiber 而子节点不存在
- React render 阶段的工作分为归阶段和递阶段,在递阶段执行 beginWork,而在归阶段,执行 completeWork - React render 阶段的工作分为归阶段和递阶段,在递阶段执行 beginWork,而在归阶段,执行 completeWork
- 如果 render 的递归阶段,如果节点只存在一个文本子节点,那么这个子节点将不会进入 beginWork 递阶段,而是由它父节点直接进入 completeWork 归阶段,这是 React 做的一个优化,而这一个逻辑在 updateHostComponent方法中的 isDirectTextChild 可以看到 - 如果 render 的递归阶段,如果节点只存在一个文本子节点,那么这个子节点将不会进入 beginWork 递阶段,而是由它父节点直接进入 completeWork 归阶段,这是 React 做的一个优化,而这一个逻辑在 updateHostComponent方法中的 isDirectTextChild 可以看到
- Host Components 会进入 updateHostComponent 逻辑,在 React 18是 updateHostComponent$1 - Host Components 会进入 updateHostComponent 逻辑,在 React 1 是 updateHostComponent$1
- updateHostComponent 方法中的 reconcileChildren 方法会为当前 Fiber 节点创建它的子 Fiber 节点,也就是 Fiber 中的 child 属性 - updateHostComponent 方法中的 reconcileChildren 方法会为当前 Fiber 节点创建它的子 Fiber 节点,也就是 Fiber 中的 child 属性
- reconcileChildren 方法接受 current 参数,通过判断这个参数是否为 null,分别执行 mountChildFibers 或 reconcileChildFibers 方法
- mountChildFibers 和 reconcileChildFibers 最终都会调用 ChildReconciler 方法,只是传入的布尔值会不同
Loading…
Cancel
Save