javascript - 在 FlatList 中渲染空单元格/分隔符
问题描述
我有这个平面列表:
<FlatList
data={orders}
keyExtractor={(item) => item.id}
style={{ height: "100%", borderWidth: 1 }}
renderItem={({ item }) => (
<ListItem
{...item}
onPress={(id) => alert(`touched ${id}`)}
/>
)}
ListEmptyComponent={() => (
<Text>
The list is empty.
</Text>
)}
ItemSeparatorComponent={() => <Separator />}
/>
分隔符组件如下所示:
const styles = StyleSheet.create({
...
separator: {
flex: 1,
height: 1,
backgroundColor: "#e4e4e4",
marginLeft: 10,
},
...
});
const Separator = () => <View style={styles.separator} />;
当我只渲染几个项目时,其余的FlatList
看起来完全是空的(用黑色勾勒出来)。如何FlatList
在空项目之间制作渲染分隔符,以便清楚那里有一个列表,即使它(大部分)是空的,所以它看起来不那么空白?
解决方案
这就是ItemSeparatorComponent
道具的工作原理,它仅在至少有 2 个元素时显示,并Separator
在项目之间添加您的组件。如果您需要添加它,即使它只是一个元素,您也需要手动添加:
renderItem={({ item }) => (
orders.length > 1
? <ListItem
{...item}
onPress={(id) => alert(`touched ${id}`)}
/>
: <>
<ListItem
{...item}
onPress={(id) => alert(`touched ${id}`)}
/>
<Separator />
</>
)}
推荐阅读
- qt - 像素图的 QList 或指向像素图混淆的指针的 Qlist
- android - 如何在 Firebase 上使用电子邮件和密码成功注册后开始活动
- dynamics-crm - 无法更新 activitymimeattachments 上的 body 属性
- java - 尝试使用 java 从 API 获取数据
- arrays - if 语句基于带有字符串数组的随机选择函数的输出打印语句
- c++ - TD[N] 是否总是声明数组类型的对象?
- java - 在maven插件中获取mojo参数
- swift - 获取错误的默认值
- excel - Excel如何在一列中循环所有数据
- python - 返回一年中特定日期的上个月