React 实现 react-dom 的细节,也是连接 「虚拟 DOM」和「浏览器真实 DOM」的核心底层模块,是 react dom 包的关键依赖,能够高效的更新和操作 DOM。
基本定位
React DOM bindings 是 React 内部的底层模块,不面向普通开发者直接使用,而是被 react dom 包封装后对外提供的向上的 API (比如 createRoot、render 等)。
它的核心使命是:把 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 的class、style接收对象而非字符串、dangerouslySetInnerHTML处理原生 HTML 插件等) - DOM 声明周期管理:处理组件挂载、更新、卸载是的 DOM 增删改操作
性能优化
- 批量更新:多个
setState合并成一次 DOM 更新 - 事件池化:复用
SyntheticEvent对象 - 异步渲染:React 18 的并发模式
与 React Native 的区别
React DOM Bindings 专为浏览器环境设置,而 React Native 使用不同的绑定层来操作原生组件,但共享相同的 React 核心概念。