react-native - 使用 FlatList 或 UI 的加载状态 React Native 2D 网格滚动
问题描述
我有一个 React Native 组件,它由嵌套的 ScrollViews 组成以创建一个网格。我正在使用它来创建 54x54 元素的 2D 滑动器(屏幕上随时有 1 个元素)。我的问题是渲染组件需要一些时间(大约 8 秒),我想减少它,或者显示加载屏幕。我研究了使用嵌套的 FlatList 来代替它,它加载速度更快,但它不会制作 2D 网格,它会在水平滚动条中制作垂直滚动条——这不是我想要的。
所以我的问题是;我可以从 FlatList 制作一个 2D 网格(带有分页)吗?如果没有,我如何向我的组件添加加载状态(看到延迟似乎是在渲染 UI 而不是在后台获取数据)?
编辑:添加代码片段:
滚动视图示例:
<View style={{height: windowHeight, width: windowWidth}}>
<ScrollView
horizontal={true}
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
showsVerticalScrollIndicator={false}>
<ScrollView
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
showsVerticalScrollIndicator={false}>
{qualities.map((quality, i) => {
return <View style={{flexDirection: 'row'}} key={i}>
{questions.map((question, j) => {
return <View style={{height: windowHeight, width: windowWidth}} key={j}>
<QualityCard style={{flex:1,justifyContent: 'center', alignItems: 'center'}} question={question} quality={quality}></QualityCard>
</View>
})}
</View>
})}
</ScrollView>
</ScrollView>
</View>
平面列表示例:
<View style={{height: windowHeight, width: windowWidth}}>
<FlatList
horizontal={true}
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
showsVerticalScrollIndicator={false}
data={questions}
keyExtractor={_keyExtractor}
renderItem={({ item: questionData }) =>(
<View style={{flexDirection: 'row'}}>
<FlatList
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
showsVerticalScrollIndicator={false}
data={qualities}
keyExtractor={_keyExtractor}
renderItem={({ item: qualityData}) => (
<View style={{height: windowHeight, width: windowWidth}}>
<QualityCard style={{flex:1,justifyContent: 'center', alignItems: 'center'}} question={questionData} quality={qualityData}></QualityCard>
</View>)}>
</FlatList>
</View>
)}
>
</FlatList>
</View>
解决方案
推荐阅读
- python - 如何在 Python 中制作一个将中缀转换为后缀的(表)?
- node.js - 错误:DPI-1047:无法加载 64 位 Oracle 客户端库
- android - Coordinator layout + viewpager 奇怪的抖动效果
- unreal-engine4 - 当我应该为 USTRUCT 定义操作类型特征时
- c - C - 系统调用 - N 个子进程的数组分区 -
- php - 如何使用 preg_match 获取 URL 的特殊部分?
- amazon-cloudfront - 如何更改查看器响应 Cloudfront 事件中的状态代码?
- python - 为什么我收到“没有名为 OpenAI 的模块”导入错误?
- xpath - 如何使用 XQuery 检测具有多个节点的重复子节点
- linux - bash 脚本来获取脚本的 asbolute 目录