React Native FlatList 键与多重渲染
React Native FlatList key with multiple rendering
我正在尝试通过 FlatList 呈现多个组件,但出现此错误:“警告:列表中的每个子项都应该有一个唯一的“关键”道具。”
我确保 keyExtractor 属性 设置正确,但我相信我的问题发生在尝试使用地图在我的 FlatList 中渲染多个组件时。
我的 FlatList 和自定义组件如下所示:
const ItemView = (row: any) => {
let title = row.item.title
let split = title.split(search)
let searchStringCount = split.length
return (
<Text>
{
split.map((elem: string, index: number) => {
return (
<>
<Text style={styles.textListStyle}>
{elem}
</Text>
{index + 1 < searchStringCount &&
<Text style={styles.textHighLightStyle}>
{search}
</Text>}
</>
)
})
}
</Text>)
}
<FlatList
style={styles.itemStyle}
data={filteredData}
keyExtractor={(item, index) => {
return index.toString();
}}
ItemSeparatorComponent={ItemSeparatorView}
renderItem={ItemView} />
我尝试手动向生成的文本组件插入键 属性,但没有成功。
使用地图渲染时需要添加key属性
split.map((elem: string, index: number) => {
return (
<View key={index}>
<Text style={styles.textListStyle}>
{elem}
</Text>
{index + 1 < searchStringCount &&
<Text style={styles.textHighLightStyle}>
{search}
</Text>}
</View>
)
})
我正在尝试通过 FlatList 呈现多个组件,但出现此错误:“警告:列表中的每个子项都应该有一个唯一的“关键”道具。”
我确保 keyExtractor 属性 设置正确,但我相信我的问题发生在尝试使用地图在我的 FlatList 中渲染多个组件时。
我的 FlatList 和自定义组件如下所示:
const ItemView = (row: any) => {
let title = row.item.title
let split = title.split(search)
let searchStringCount = split.length
return (
<Text>
{
split.map((elem: string, index: number) => {
return (
<>
<Text style={styles.textListStyle}>
{elem}
</Text>
{index + 1 < searchStringCount &&
<Text style={styles.textHighLightStyle}>
{search}
</Text>}
</>
)
})
}
</Text>)
}
<FlatList
style={styles.itemStyle}
data={filteredData}
keyExtractor={(item, index) => {
return index.toString();
}}
ItemSeparatorComponent={ItemSeparatorView}
renderItem={ItemView} />
我尝试手动向生成的文本组件插入键 属性,但没有成功。
使用地图渲染时需要添加key属性
split.map((elem: string, index: number) => {
return (
<View key={index}>
<Text style={styles.textListStyle}>
{elem}
</Text>
{index + 1 < searchStringCount &&
<Text style={styles.textHighLightStyle}>
{search}
</Text>}
</View>
)
})