Skip to main content

关于React

· 2 min read
alexerx

React 是一款非常优秀的构建用户界面的 Javascript 库。

React 运行的原理比较复杂,它抽象了很多数据结构,如最小的调度单元 Fiber、任务优先级 Lanes、Hooks、副作用 Effect 等,代码量也非常大。

在整体设计上,React 并不只是局限于 web 页面的构建。它在上层抽象出一套 api,用来描述 UI 以及各种交互逻辑,下层有多种渲染器,来实现在不同端的渲染。 我们最常用的渲染器就是 react-dom,用来渲染 web 页面,其他的还有 react-native、react-pdf 等。

UI/交互的描述渲染之间,就是 React 具体如何更新、协调、调度的核心逻辑,日常的开发不会接触到这里。

综上,我们可以把 React 拆分成 3 层:
  • api 层,暴露对开发者的 UI/交互描述接口
  • core 层,React 内核,主要包含两个部分:
    • react-reconciler,连接从输入(状态变化)到输出(渲染)的整体链路
    • scheduler,负责 Fiber 的调度,控制每一帧 React 代码的执行时机,做到不阻塞页面的渲染
  • render 层,不同场景下的渲染逻辑

一个 React 应用,一般都是从ReactDOM.render(<App />, root);开始,React 会创建 3 个全局对象:

  • ReactDomRoot,暴露 render、unmount 方法
  • fiberRoot,保存 fiber 构建过程中全局状态
  • HostRootFiber,React 应用的第一个 Fiber 对象,是 Fiber 树的根节点

参考

图解 React 原理系列