简而言之
嗯.. 本质上,是的,就像 Reactjs 的虚拟 DOM 一样,React-Native 创建一个树层次结构来定义初始布局,并在每次布局更改时创建该树的差异以优化渲染。除了 React-Native 通过几个架构层管理 UI 更新,这些架构层最终会转换视图的呈现方式,同时尝试将更改优化到最低限度,以提供可能的最快呈现。
更详细的解释
为了了解 react native 如何在后台创建视图,您需要了解基础知识,为此,我宁愿从头开始
1.Yoga布局引擎
Yoga是一个用 C 编写的跨平台布局引擎,它通过绑定到本机视图(Java Android Views / Objective-C iOS UIKit)来实现 Flexbox 。
React-Native 中各种视图、文本和图像的所有布局计算都是通过yoga完成的,这基本上是我们的视图显示在屏幕上之前的最后一步
2. 阴影树/阴影节点
当 react-native 发送命令来渲染布局时,一组阴影节点被组装起来构建阴影树,它代表了布局的可变原生端(即:用相应的原生语言编写,Java for Android 和 Objective-C对于 iOS),然后将其转换为屏幕上的实际视图(使用 Yoga)。
3. 视图管理器
ViewManger 是一个接口,它知道如何将从 JavaScript 发送的视图类型转换为它们的原生 UI 组件。ViewManager 知道如何创建阴影节点、原生视图节点和更新视图。在 React-Native 框架中,有很多 ViewManager 可以启用原生组件的使用。例如,如果有一天你想创建一个新的自定义视图并将其添加到 react-native,该视图将必须实现 ViewManager 接口
4. 界面管理器
UIManager 是拼图的最后一块,或者实际上是第一块。JavaScript JSX 声明性命令作为命令式命令发送到本机,这些命令告诉 React-Native 如何逐步迭代地布局视图。因此,作为第一次渲染,UIManager 将分派命令来创建必要的视图,并随着应用程序的 UI 随时间变化而继续发送更新差异。
所以 React-Native 基本上还是利用了 Reactjs 的能力来计算上次和当前渲染表示的差异,并相应地将事件分派给 UIManager
了解的过程有点更深入,我提出以下建议文稿由埃米尔Sjölander从阵营-欧盟本土2017年会议在Wroclaw