我一直在使用 map 函数在我的 React Native 应用程序中使用 Flatlist 呈现数据。但是由于某种原因,相同的数据被渲染了三次。这是我现在拥有的:
renderItem = ({ item, index }) => {
if (item === null) return <View key="post_" />;
const imageURI = this.props.categories;
const mainCategories = imageURI.filter(
category => category.parent === 0
);
return mainCategories.map((data) => {
return (
<TouchableOpacity
activeOpacity={0.9}
style={[styles.panelTwo]}
onPress={() => this.onRowClickHandle(item)}
>
<ImageCache uri={data.image === null ? Images.defaultPayment : data.image.src} key={data.id} style={styles.imagePanelTwo} />
<Text numberOfLines={1} style={styles.nameTwo}>
{data.name}
</Text>
</TouchableOpacity>
);
})
};
render() {
const {categories,showSorting} = this.props;
const mainCategories = this.props.categories.filter(
category => category.parent === 0
);
return (
<View>
<View style={[styles.flatWrap]}>
<FlatList
contentContainerStyle={styles.flatlist}
data={mainCategories}
keyExtractor={item => `post__${item.id}`}
renderItem={this.renderItem}
showsHorizontalScrollIndicator={false}
horizontal
/>
</View>
</View>
);
}
}
我无法弄清楚为什么在这种情况下相同的数据会渲染三次。mainCategories 也是这样的:
除了它显示了三遍。