为什么我们在react-native中使用View组件中的removeClippedSubviews属性?

时间:2018-11-19 12:24:07

标签: android ios reactjs react-native

为什么我们在react-native中使用removeClippedSubviews组件中的View属性,它的作用是什么?这些文档说:

  

这是RCTView公开的特殊性能属性,它是   当有很多子视图时,对滚动内容很有用   屏幕外。为了使此属性有效,必须   应用于包含许多扩展到其子视图之外的子视图的视图   界。子视图还必须具有overflow: hidden,   包含视图(或其超级视图之一)。

documentation似乎难以理解。谁能用一个小例子解释一下?

2 个答案:

答案 0 :(得分:0)

您需要首先了解剪辑视图的概念 剪辑视图表示基于某些逻辑(例如

)显示的选择性视图
if(this.state.status === true){
return(<View style={{backgroundColor:'red'}}/>)
}else{
return(<View style={{backgroundColor:'green'}}/>)
}

在上面的示例中,我们有两个红色和绿色视图,但是根据状态一次只能显示其中一个,这就是所谓的裁剪视图

现在回到您的问题,removeClippedSubviews属性将重置或删除所有裁剪的视图,这些视图将释放一些空间

  

注意:-解释是基于我对我什至没有参考的不同论坛的个人理解,您可以进一步挖掘该主题,并在我为我提供参考的同时我也学习   谢谢:)

答案 1 :(得分:0)

将 removeClippedSubviews 设置为 false 修复了一个可怕的问题:如果您在 FlatList 中使用 TextInput,Android 键盘会关闭,并且点击的 TextInput 位于即将成为键盘区域的下方。

(我什至在 React Native 文档示例中复制了这个,我只是在虚拟 android 上运行了一个示例并将 Text 更改为 TextInput。)

我认为即将在键盘下的子视图被删除,因为它们即将被键盘剪裁,导致键盘立即离开,因为不再呈现 TextInput。

因此,该属性有一个(就我而言)至关重要的用途,至少在 FlatList 上是这样。