diff --git a/自顶向下学 React 源码/React 源码的碎片记录.md b/自顶向下学 React 源码/React 源码的碎片记录.md index e877462..197c6b6 100644 --- a/自顶向下学 React 源码/React 源码的碎片记录.md +++ b/自顶向下学 React 源码/React 源码的碎片记录.md @@ -16,5 +16,7 @@ - 对于首屏渲染来说,只有根节点具有 current Fiber 而子节点不存在 - React render 阶段的工作分为归阶段和递阶段,在递阶段执行 beginWork,而在归阶段,执行 completeWork - 如果 render 的递归阶段,如果节点只存在一个文本子节点,那么这个子节点将不会进入 beginWork 递阶段,而是由它父节点直接进入 completeWork 归阶段,这是 React 做的一个优化,而这一个逻辑在 updateHostComponent方法中的 isDirectTextChild 可以看到 -- Host Components 会进入 updateHostComponent 逻辑,在 React 18是 updateHostComponent$1 -- updateHostComponent 方法中的 reconcileChildren 方法会为当前 Fiber 节点创建它的子 Fiber 节点,也就是 Fiber 中的 child 属性 \ No newline at end of file +- Host Components 会进入 updateHostComponent 逻辑,在 React 1 是 updateHostComponent$1 +- updateHostComponent 方法中的 reconcileChildren 方法会为当前 Fiber 节点创建它的子 Fiber 节点,也就是 Fiber 中的 child 属性 +- reconcileChildren 方法接受 current 参数,通过判断这个参数是否为 null,分别执行 mountChildFibers 或 reconcileChildFibers 方法 +- mountChildFibers 和 reconcileChildFibers 最终都会调用 ChildReconciler 方法,只是传入的布尔值会不同 \ No newline at end of file