我正在尝试阅读本机android的代码。令我困惑的是VirtualViewManager和FlatViewManager之间的区别。据我所知,flatViewManager用于平面UI实现。但是,VirtualViewManager的傀儡是什么? VirtualViewManager和FlatViewManager彼此非常相似,有两个相似的ViewManager存在的原因是什么?
答案 0 :(得分:3)
在React中,有一个虚拟布局节点的概念,它是一个不是Flexbox节点的React节点。它通常是非虚拟父母的孩子,帮助父母进行测量和布局。
最好的例子是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,由于虚拟和非虚拟节点的行为不同,它们相应的ViewManagers的行为也不同,因此具有不同的类。例如,VirtualViewManager从createViewInstance()抛出异常,而FlatViewManager从同一方法返回一个新的FlatViewGroup()。
希望有所帮助。