react-native - 如何解决此警告:VirtualizedLists 永远不应嵌套在具有相同方向的普通 ScrollViews 中
问题描述
当我FlatList
在里面使用组件时,ScrollView
我看到一个警告:
VirtualizedLists 永远不应该嵌套在具有相同方向的普通 ScrollViews 中 - 改用另一个 VirtualizedList 支持的容器。
FlatList
在我使用很多其他组件之前和之后,我的屏幕很长。
我试图用它来包装内容,SafeAreaView
但它对我没有帮助,因为在这种情况下我无法滚动内容。ListHeaderComponent={SafeAreaView}
我也尝试ListFooterComponent={SafeAreaView}
在<FlatList>
.
我用:
- “反应”:“16.9.0”,
- “反应原生”:“0.61.5”,
解决方案
这是一个 VirutalizedList 支持的容器实现,使用FlatList
:
import React from 'react';
import { FlatList } from 'react-native';
export default function VirtualizedView(props: any) {
return (
<FlatList
data={[]}
ListEmptyComponent={null}
keyExtractor={() => "dummy"}
renderItem={null}
ListHeaderComponent={() => (
<React.Fragment>{props.children}</React.Fragment>
)}
/>
);
}
用法:
<VirtualizedView>
<Text>Anything goes here, even FlatList works good</Text>
<View style={{minHeight: 480}}> // leave enough space for better user experience
<FlatList
data={data}
keyExtractor={keyExtractor}
renderItem={({item}) => <Item data={item} />}
onRefresh={refetch}
refreshing={loading}
onEndReached={concatData}
/>
</View>
</VirtualizedView>
当您的屏幕太长时,这将显示滚动条并删除讨厌的警告信息和性能将毫无问题地保存。
推荐阅读
- elasticsearch - Elasticsearch - 使用新索引名称的模式重新索引整个集群
- zoneddatetime - “ZonedDateTime 未定义错误”是一个错误吗?
- firebase - Firestore 规则:已达到最多 1000 个要评估的表达式
- node.js - 文件上传完成后node.js内存不足
- javascript - 当网格上方的内容被隐藏时,如何向上滑动网格?
- javascript - 不使用 jQuery 以编程方式控制 Select2
- python - 从提交中获取 GitHub 存储库 URL
- r - 使用 lapply 在函数内设置数据框名称
- angular - 如果我想从编辑中禁用特定行,但不在 ng2 智能表中显示编辑/删除按钮怎么办
- powerbi - 使用安全嵌入选项将 Power BI 报表嵌入到 Web 应用程序时如何从报表中删除登录页面