React 旨在通过一套平台特定的渲染器将内容渲染到多种环境。本页将解释 React 的渲染架构如何工作、React 核心与平台特定代码之间的接口,以及 React 生态系统中主要的渲染目标。
React 的架构将核心协调算法与平台特定渲染逻辑分离。这种分离使得 React 能够支持多个渲染目标,同时保持一致的编程模型。
来源
每个渲染器都提供一个“host 配置”实现,用于定义 React 如何与目标平台交互。host 配置包括用于创建、更新和管理平台特定实例的方法。
来源
Host 配置负责:
React 包含几个官方渲染目标:
ReactDOM 是 Web 浏览器的主要渲染器,目标是 DOM(文档对象模型)。
来源
主要功能
ReactNative 支持将 React 组件渲染到原生移动平台(iOS、Android)。
来源
主要功能
ReactFabric 是使用 C++ Fabric 渲染系统构建的现代 React Native 渲染器。
来源
主要功能
React 包含两个测试渲染器:
来源
每个渲染器都为其管理的平台特定实例定义自己的类型
| 渲染器 | 实例类型 | 容器类型 | 文本实例 |
|---|---|---|---|
| ReactDOM | DOM 元素 | DOM 元素/文档/片段 | 文本节点 |
| ReactNative | ReactNativeFiberHostComponent | 带有 containerTag 的容器对象 | 数字(tag) |
| ReactFabric | 带有 node 和 canonical 属性的对象 | 根容器 | 带有 node 属性的对象 |
| ReactTestRenderer | 带有 type、props 和 children 的对象 | 带有 children 数组的对象 | 带有 text 属性的对象 |
来源
所有渲染器都实现协调器使用的这些关键方法:
createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle)
createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle)
appendInitialChild(parentInstance, child)
finalizeInitialChildren(instance, type, props, hostContext)
appendChild(parentInstance, child)
insertBefore(parentInstance, child, beforeChild)
removeChild(parentInstance, child)
commitUpdate(instance, updatePayload, type, oldProps, newProps, internalInstanceHandle)
commitTextUpdate(textInstance, oldText, newText)
来源
React 协调器计算更新并通过 host 配置接口调用渲染器。
来源
React 的架构允许为任何目标平台创建自定义渲染器。这些自定义渲染器使用与官方渲染器相同的 host 配置接口。
来源
自定义渲染器必须实现与官方渲染器相同的 host 配置接口,包括:
React 中的渲染目标是通过平台特定渲染器实现的,这些渲染器与核心协调算法共享一个通用接口。这种架构允许 React 针对多个平台,同时保持一致的编程模型。
每个渲染器都实现一个 host 配置,它定义了 React 如何与目标平台交互,包括创建实例、管理属性和处理事件。官方渲染器(ReactDOM、ReactNative、ReactFabric、ReactTestRenderer)涵盖了最常见的用例,但该架构也支持用于其他平台的自定义渲染器。
有关特定渲染目标的更多信息,请参阅: