react-native - 如果渲染项返回 null,则处理 numcolumn 大于 2 的平面列表
问题描述
<FlatList
data={["1","2","1","2","1","2","1","2","1","2","1","2","1","2",]}
renderItem={
({ item }) => {
if(item==="1"){
return(
<View style={styles.box}>
<Text>{item}</Text>
</View>)
}
}
}
numColumns={2}
columnWrapperStyle={{justifyContent:'space-around'}}
/>
这是我的代码,我的目标是使结果与以下内容相同:
<FlatList
data={["1","1","1","1","1","1","1"]}
renderItem={
({ item }) => {
if(item==="1"){
return(
<View style={styles.box}>
<Text>{item}</Text>
</View>)
}
}
}
numColumns={2}
columnWrapperStyle={{justifyContent:'space-around'}}
/>
我正在努力解决这个问题,但在谷歌或 StackOverflow 上找不到任何答案。我怎样才能做到这一点?
解决方案
如果我理解正确,您希望第一个代码片段呈现与第二个代码片段相同的 UI,即仍然有 2 列。如果这是所需的行为,您可以在将数据提供给之前过滤数据FlatList
:
<FlatList
data={["1","2","1","2","1","2","1"].filter(element => element === "1")}
...
或者,您可以渲染一个空白View
来代替不符合您的条件的元素(在这种情况下,您将有 2 列,其中包含 !== "1" 的元素的“空”单元格):
<FlatList
data={["1","2","1","2","1","2","1","2","1","2","1","2","1","2",]}
renderItem={
({ item }) => {
if (item === '1'){
return (
<View style={styles.box}>
<Text>{item}</Text>
</View>)
} else {
return <View/>
}
}
}
...
推荐阅读
- c++11 - 如何将指针向量中的指针移动到该向量中的另一个索引?
- linux - 看似无法解决的“无法在 unix 上连接到 Docker 守护进程”(尝试了 7 种解决方案但都失败了)
- c# - 没有索引器或数组的推送和弹出
- python - Python 线程 Selenium
- php - BLOB 正确插入 DB,但未在 HTML 中显示
- sapui5 - 搜索字段:过滤嵌套对象
- python - 在python上检查数据框中的连续值
- android - 如何在 Android Studio 中使用 Firebase 保存图像的 URL
- python - 如何在 Django 中为电影模型添加多个演员?
- office-js - 适用于 Mac OS 和 Windows 的 Word 插件安装