跳到主要内容

React 实现 react-dom 的细节,也是连接 「虚拟 DOM」和「浏览器真实 DOM」的核心底层模块,是 react dom 包的关键依赖,能够高效的更新和操作 DOM。

基本定位

React DOM bindings 是 React 内部的底层模块,不面向普通开发者直接使用,而是被 react dom 包封装后对外提供的向上的 API (比如 createRootrender 等)。

它的核心使命是:把 React 跨平台的虚拟 DOM (virtual DOM)逻辑,与浏览器的真实 DOM 环境做「绑定」,处理所有和 DOM 相关的具体操作。

核心功能

该模块主要负责以下关键工作:

  • 虚拟 DOM 转真实 DOM: 将 React 元素(虚拟节点)创建为对应的浏览器真实 DOM 节点(比如把 <div> 虚拟节点变成 document.createElement('div'))。
  • DOM 协调(Reconciliation): 对比新旧虚拟 DOM 树的差异,计算「最小更新量」,只需修改实际变化的真实 DOM 节点(这是 React 性能优化的核心)
  • 合成事件绑定:封装浏览器原生事件,实现 React 特有的合成事件系统(比如 onClick 不是直接绑定到 DOM,而是通过事件委托统一处理)
  • 特殊属性处理:处理 React 中与 DOM 不一致的属性(比如 className 对应 DOM 的 classstyle 接收对象而非字符串、 dangerouslySetInnerHTML 处理原生 HTML 插件等)
  • DOM 声明周期管理:处理组件挂载、更新、卸载是的 DOM 增删改操作

性能优化

  • 批量更新:多个 setState 合并成一次 DOM 更新
  • 事件池化:复用 SyntheticEvent 对象
  • 异步渲染:React 18 的并发模式

React Native 的区别

React DOM Bindings 专为浏览器环境设置,而 React Native 使用不同的绑定层来操作原生组件,但共享相同的 React 核心概念。