Если вы хотите узнать, какой элемент был нажат в Flatlist
, вы можете легко использовать один из компонентов TouchableOpacity
, TouchableNativeFeedback
, TouchableHighlight
или TouchableWithoutFeedback
, доступных в реагирующем.
В вашем случае вы можете сделать что-то вроде:
render() {
const listActivities = this.state.activitiesList;
function Item({ title }) {
return (
<TouchableOpacity
onPress={() => {
console.log(title, 'was pressed');
}}
>
<View style={styles.item}>
<Text style={styles.title}>{title}</Text>
</View>
</TouchableOpacity>
);
}
return (
<View>
<View style={styles.container}>
<Text style={styles.heading}>UPCOMING ACTIVITIES</Text>
</View>
<View>
<SafeAreaView>
<FlatList onPress={() => navigate(DetailsScreen)}
data={listActivities}
renderItem={({ item }) => <Item title={item.name} />}
keyExtractor={item => item.id}
/>
</SafeAreaView>
</View>
</View>
);
}
Вы можете прочитать больше на Официальные документы RN
В примечании обратите внимание на объявление функций вне вашей функции рендеринга для лучшая производительность в долгосрочной перспективе, чтобы избежать повторного выделения функции / компонентов снова и снова. как:
renderItem = (name) => {
return (
<TouchableOpacity
onPress={() => {
console.log(name, 'was pressed');
}}
>
<View style={styles.item}>
<Text style={styles.title}>{name}</Text>
</View>
</TouchableOpacity>
);
}
render() {
const listActivities = this.state.activitiesList;
return (
<View>
<View style={styles.container}>
<Text style={styles.heading}>UPCOMING ACTIVITIES</Text>
</View>
<View>
<SafeAreaView>
<FlatList onPress={() => navigate(DetailsScreen)}
data={listActivities}
renderItem={({ item }) => this.renderItem(item.name)}
keyExtractor={item => item.id}
/>
</SafeAreaView>
</View>
</View>
);
}