![](/img/trans.png)
[英]React Native: renderItem component to Custom FlatList as a prop? (like Vue slots)
[英]How to typing renderItem Flatlist received by prop in react native and TS?
我有一个组件HorizontalList
呈现这个:
<HorizontalList
data={categories}
renderItem={renderCategories}
titleList={'Categories'}
/>
这是我的组件文件,它接收以下道具
//HorizontalList.tsx
interface Props {
titleList: string;
data: object[];
renderItem: <--- //IDK what type should be here;
}
const HorizontalList: React.FC<Props> = ({titleList, data, renderItem}) => {
return (
<View style={styles.root}>
<Text style={styles.titleText}>{titleList}</Text>
<FlatList horizontal data={data} renderItem={renderItem} />
</View>
);
};
但我不知道什么类型应该是renderItem
道具,我尝试使用() => JSX.Element
,但是我得到了错误:
Type '({ item }: { item: ICategorieItem; }) => JSX.Element' is not assignable to type '() => Element'.
你可以这样做;
interface Props {
titleList: string;
data: ICategorieItem[];
renderItem: ({
item: ICategorieItem,
index: number,
}) => React.ReactElement;
}
或者,您可以使用ListRenderItem
中的react-native
。
有关更多替代方案,请参阅此讨论。
// data prop type definition for FlatList
data: ReadonlyArray<ItemT> | null | undefined;
// renderItem prop type definition
renderItem: ListRenderItem<ItemT> | null | undefined;
当您还看到renderItem
和data
道具的类型定义时,您会注意到那些接收完全相同的通用类型的道具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.