beginWork
Reconciler 协调器是 Render 阶段的第二部分工作,主要是负责比较当前组件树和新的组件树(由组件状态或属性变化产生),然后计算出实际DOM需要更新的最小变化集。整个工作的过程可以分为「递」和「归」,分别对应 beginWork 方法和 completeWork 方法
Reconciler 协调器是 Render 阶段的第二部分工作,主要是负责比较当前组件树和新的组件树(由组件状态或属性变化产生),然后计算出实际DOM需要更新的最小变化集。整个工作的过程可以分为「递」和「归」,分别对应 beginWork 方法和 completeWork 方法
Commit 阶段是将 Reconcile 阶段计算出的 DOM 更新应用到实际 DOM 中,并执行相关的生命周期钩子和设置 effect 的阶段
为每个 Fiber 节点完成渲染准备,包括处理每个节点的 DOM 更新逻辑和收集本次更新过程中所有子节点的副作用
diff 发生在 Render 阶段,指的是 CurrentFiberNode(旧) 和 JSX DOM(新) 做对比,然后生成新的 WorkInProgressFiberNode
项目简介
综述
Fiber
Hook 内部介绍
https://incepter.github.io/how-react-works/docs/react-dom/how.createroot.works
https://incepter.github.io/how-react-works/docs/react-dom/how.root_render.works
在 Scheduler 内部,定义了一套通用的优先级机制
React 在任务调度时利用 MessageChannel 实现非阻塞的异步任务调度,以便高效利用浏览器的主线程,避免影响用户交互和页面渲染的流畅度
项目简介
简介
位运算
React 更新流程
前端框架的理解
React 整体的渲染流程可以分为两大阶段,分别是 render 阶段和 commit 阶段。每个阶段对应不同的组件
延时任务的调度主要是由 requestHostTimeout 函数开启的
Scheduler 核心源码在这里
在 React 中,有许多触发状态更新的方法,比如
Upload 组件
useEffect 是一个React Hook,可以使组件与外部系统同步。
useCallback
useMemo 是一个React Hook,能够在 re-render 之间缓存一个计算结果。
- 返回的一个普通 JavaScript 对象,其中有一个 .current 属性指向传递给 useRef 的初始值。useRef 并不会创建一个新的对象,它返回的是同一个 ref 对象每次渲染。而且,useRef 并不负责处理状态更新,对 .current 属性的修改不会触发组件重新渲染。
useRef • React (reactjs.org)
源码
useState • React (reactjs.org)
useEffect注意事项