add support for ListEmptyComponent, allow undefined data

This commit is contained in:
Hailey
2024-06-06 15:59:38 -07:00
parent bd1e6fced9
commit 5b976972f5
+27 -14
View File
@@ -38,6 +38,7 @@ function ListImpl<ItemT>(
{
ListHeaderComponent,
ListFooterComponent,
ListEmptyComponent,
containWeb,
contentContainerStyle,
data,
@@ -92,6 +93,16 @@ function ListImpl<ItemT>(
}
}
let emptyComponent: JSX.Element | null = null
if (ListEmptyComponent != null) {
if (isValidElement(ListEmptyComponent)) {
emptyComponent = ListEmptyComponent
} else {
// @ts-ignore Nah it's fine.
emptyComponent = <ListEmptyComponent />
}
}
if (headerOffset != null) {
style = addStyle(style, {
paddingTop: headerOffset,
@@ -331,20 +342,22 @@ function ListImpl<ItemT>(
/>
)}
{header}
{(data as Array<ItemT>).map((item, index) => {
const key = keyExtractor!(item, index)
return (
<Row<ItemT>
key={key}
item={item}
index={index}
renderItem={renderItem}
extraData={extraData}
onItemSeen={onItemSeen}
disableContentVisibility={disableContentVisibility}
/>
)
})}
{!data || data.length === 0
? emptyComponent
: (data as Array<ItemT>)?.map((item, index) => {
const key = keyExtractor!(item, index)
return (
<Row<ItemT>
key={key}
item={item}
index={index}
renderItem={renderItem}
extraData={extraData}
onItemSeen={onItemSeen}
disableContentVisibility={disableContentVisibility}
/>
)
})}
{onEndReached && (
<Visibility
root={containWeb ? nativeRef : null}