这是一个简单的FlatList:
class Products ..
render() {
return (
<FlatList
renderItem={this._renderItem}
);
}我希望创建一个项目列表,并按onPress项导航到详细页面。
能告诉我哪种方法更好吗?
方法1:
在子组件(CardProduct组件)中插入导航到详细信息页,如下所示:
_renderItem = ({item}) => (
<CardProduct
id={item.id}
title={item.title}
/>
);在CardProduct组件中:
render() {
const { id,title } = this.props;
return (
<Card style={{flex:1}}>
<CardItem cardBody button onPress={() => this.props.navigation.navigate('Details',{productId:id})}>
...
);
}方法2:
在当前组件(Products组件)中插入导航到详细信息页,如下所示:
_onPressItem = (id: string) => {
this.props.navigation.navigate('Details',{productId:id});
};
_renderItem = ({item}) => (
<CardProduct
id={item.id}
title={item.title}
onPressItem={this._onPressItem}
/>
);在CardProduct组件中:
_onPress = () => {
this.props.onPressItem(this.props.id);
};
render() {
const { id,title } = this.props;
return (
<Card style={{flex:1}}>
<CardItem cardBody button onPress={this._onPress}>
...
);
}我以前做过方法1,但我读过本指南。
发布于 2019-05-07 14:42:41
在react本机平面列表中进行性能优化的一个步骤是为renderItem使用无状态功能组件.你应该总是给每个项目一个独特的钥匙。
https://stackoverflow.com/questions/56024339
复制相似问题