当前位置:首页 > React

react 如何渲染的

2026-01-15 09:52:47React

React 渲染机制

React 的渲染过程分为两个主要阶段:协调(Reconciliation)提交(Commit)。协调阶段负责计算差异(Diffing),提交阶段将变化应用到 DOM。

虚拟 DOM 的作用

React 使用虚拟 DOM 作为中间层,通过对比新旧虚拟 DOM 树的差异,最小化直接操作真实 DOM 的开销。虚拟 DOM 是一个轻量级的 JavaScript 对象,描述 UI 的结构和状态。

协调阶段的流程

  1. 生成虚拟 DOM 树
    组件通过 render 方法或函数组件的返回值生成虚拟 DOM 树。每次状态或属性变化时,会重新生成新的虚拟 DOM 树。

  2. Diffing 算法
    React 通过启发式算法(如按层级比较、Key 优化)对比新旧虚拟 DOM 树,找出需要更新的部分。算法的时间复杂度为 O(n)。

    • 元素类型不同:直接销毁旧子树,创建新子树。
    • 元素类型相同:递归比较子节点。
    • Key 属性:帮助 React 识别列表中元素的移动或重用。

提交阶段的流程

  1. 更新 DOM
    根据协调阶段的结果,React 调用 ReactDOM 或其他渲染器(如 React Native)的 API,将差异应用到真实 DOM。此阶段可能触发浏览器重绘或重排。

    react 如何渲染的

  2. 生命周期与副作用
    在提交阶段后,React 触发相关生命周期方法(如 componentDidMountcomponentDidUpdate)或 Hook 的副作用(如 useEffect)。

性能优化策略

  • 避免不必要的渲染
    使用 React.memoshouldComponentUpdate 跳过无变化的组件渲染。

  • 稳定的 Key
    列表渲染时使用唯一且稳定的 Key,避免因 Key 变化导致不必要的 DOM 操作。

    react 如何渲染的

  • 批量更新
    React 自动批量处理状态更新,减少渲染次数。异步场景可使用 ReactDOM.unstable_batchedUpdates(非正式 API)。

示例代码

function MyComponent({ data }) {
  // 生成虚拟 DOM
  return (
    <div>
      {data.map(item => (
        <ChildComponent key={item.id} item={item} />
      ))}
    </div>
  );
}

// 优化:跳过 props 未变化的渲染
const ChildComponent = React.memo(({ item }) => {
  return <div>{item.name}</div>;
});

公式说明

虚拟 DOM 的 Diffing 算法核心逻辑可简化为:

$$ \text{Diff}(V{\text{old}}, V{\text{new}}) = \text{PatchList} $$

其中:

  • $V_{\text{old}}$ 是旧虚拟 DOM 树。
  • $V_{\text{new}}$ 是新虚拟 DOM 树。
  • $\text{PatchList}$ 是应用到真实 DOM 的最小操作集合。

标签: react
分享给朋友:

相关文章

如何学习react

如何学习react

学习 React 的步骤 理解基础概念 React 是一个用于构建用户界面的 JavaScript 库。学习 React 之前,建议掌握 JavaScript 的基础知识,包括 ES6+ 语法(如箭头…

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g reac…

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm u…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 在项目根目录的 package.json 文件中查看 dependencies 或 devDependencies 下的 react 和…

react如何

react如何

React 基础概念 React 是一个用于构建用户界面的 JavaScript 库,专注于组件化开发。通过虚拟 DOM 和高效的渲染机制,React 能够实现高性能的 UI 更新。 安装 Re…

react实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式:…