React Native 中 VirtualViewManager 和 FlatViewManager 有什么区别 android
What's the difference between VirtualViewManager and FlatViewManager in react native android
我正在尝试阅读 React Native 的代码 android。让我感到困惑的是 VirtualViewManager 和 FlatViewManager 之间的区别。据我了解,flatViewManager 用于平面 UI 实现。但是,VirtualViewManager 的目的是什么? VirtualViewManager 和 FlatViewManager 非常相似,这两个相似的 ViewManager 存在在一起的原因是什么?
在React中,有一个虚拟布局节点的概念,它是一个React节点,而不是一个Flexbox节点。它通常是 non-virtual parent 的 child 并帮助 parent 进行测量和布局。
最好的例子是 RCTVirtualText,它包含样式信息,例如字体大小、文本颜色等。
例如,检查以下 React 代码:
<Text color=green>
He
<Text size=11>ll</Text>
o
</Text>
实际上会扩展成以下内容:
<RCTText color=green>
<RCTRawText>He</RCTRawText>
<RCTVirtualText size=11>
<RCTRawText>ll</RCTRawText>
</RCTVirtualText>
<RCTRawText>o</RCTRawText>
</RCTText>
RCTVirtualText 和 RCTRawText 是虚拟节点,它们无法测量,只存在于整个 RCTText 的一部分。
虚拟节点永远不会映射到 Android 视图(顶级 RCTText 可以映射到 TextView,但内部虚拟节点不会)。
回到 ViewManagers,由于虚拟节点和 non-virtual 节点的行为不同,它们对应的 ViewManagers 的行为也不同,因此具有不同的 类。例如,VirtualViewManager 从 createViewInstance() 抛出异常,而 FlatViewManager returns 从同一方法抛出一个新的 FlatViewGroup()。
希望对您有所帮助。
我正在尝试阅读 React Native 的代码 android。让我感到困惑的是 VirtualViewManager 和 FlatViewManager 之间的区别。据我了解,flatViewManager 用于平面 UI 实现。但是,VirtualViewManager 的目的是什么? VirtualViewManager 和 FlatViewManager 非常相似,这两个相似的 ViewManager 存在在一起的原因是什么?
在React中,有一个虚拟布局节点的概念,它是一个React节点,而不是一个Flexbox节点。它通常是 non-virtual parent 的 child 并帮助 parent 进行测量和布局。
最好的例子是 RCTVirtualText,它包含样式信息,例如字体大小、文本颜色等。
例如,检查以下 React 代码:
<Text color=green>
He
<Text size=11>ll</Text>
o
</Text>
实际上会扩展成以下内容:
<RCTText color=green>
<RCTRawText>He</RCTRawText>
<RCTVirtualText size=11>
<RCTRawText>ll</RCTRawText>
</RCTVirtualText>
<RCTRawText>o</RCTRawText>
</RCTText>
RCTVirtualText 和 RCTRawText 是虚拟节点,它们无法测量,只存在于整个 RCTText 的一部分。
虚拟节点永远不会映射到 Android 视图(顶级 RCTText 可以映射到 TextView,但内部虚拟节点不会)。
回到 ViewManagers,由于虚拟节点和 non-virtual 节点的行为不同,它们对应的 ViewManagers 的行为也不同,因此具有不同的 类。例如,VirtualViewManager 从 createViewInstance() 抛出异常,而 FlatViewManager returns 从同一方法抛出一个新的 FlatViewGroup()。
希望对您有所帮助。