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

Dad*_*Boy 5 android ios reactjs react-native

为什么我们在 react-nativeremoveClippedSubviews中使用View组件中的属性以及它的作用?文件说:

这是一个特殊的性能属性,RCTView当有许多子视图(其中大多数在屏幕外)时,它对滚动内容很有用。要使此属性有效,它必须应用于包含许多扩展到其边界之外的子视图的视图。子视图也必须有overflow: hidden,包含视图(或其父视图之一)也应该有。

该文档似乎无法理解。谁能用一个小例子解释一下?

Pla*_*rob 7

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

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

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

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


Amm*_*riq 2

您需要首先了解剪切视图的概念 剪切视图是指基于某些逻辑显示的选择性视图

if(this.state.status === true){
return(<View style={{backgroundColor:'red'}}/>)
}else{
return(<View style={{backgroundColor:'green'}}/>)
}
Run Code Online (Sandbox Code Playgroud)

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

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

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