VirtualViewManager和FlatViewManager在反应原生android之间有什么区别

问题描述:

我想读取反应原生android的代码。令我困惑的是VirtualViewManager和FlatViewManager之间的区别。就我的理解而言,flatViewManager用于平面UI实现。但是,VirtualViewManager的瞳孔是什么? VirtualViewManager和FlatViewManager是非常相似的,有两个相似的ViewManager存在在一起的原因吗?VirtualViewManager和FlatViewManager在反应原生android之间有什么区别

在React中,有一个虚拟布局节点的概念,它是一个不是Flexbox节点的React节点。它通常是非虚拟父母的孩子,并帮助父母进行测量和布局。

最好的例子是一个RCTVirtualText,其保持定型的信息,例如字体大小,文本颜色等

例如,检查下面的反应的代码:

<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,由于虚拟和非虚拟节点的行为不同,它们对应的ViewManagers的行为也不同,因此具有不同的类。例如,VirtualViewManager从createViewInstance()抛出异常,而FlatViewManager从同一方法返回一个新的FlatViewGroup()。

希望有所帮助。

+0

明白了,谢谢。我有其他问题,我会打开另一个线程。 http://stackoverflow.com/questions/43465546/what-is-the-purpose-of-flatviewmanager-in-react-native-android – York