Ma FlatList est un composant sans état, et lorsque l'élément est pressé, je veux gérer onPress par la méthode d'appel "handleOnPress". Comment puis-je le faire ?? ce qui suit est des exemples de codes.
`
handleOnPress = () => {
.....
}
<SampleListView
data={prop.data}
onPress={this.handleOnPress}
/>
const SampleListView = (props: Props) => {
return (
<FlatList
style={styles.container}
data={props.data}
keyExtractor={item => item.id.toString()}
renderItem={renderItem}
/>
)
}
renderItem = ({ item }: { item: DataSample }) => {
return (
<TouchableWithoutFeedback onPress={ () => props.onPress}>
....
</TouchableWithoutFeedback>
)
}
"
Pouvez-vous essayer cela?
handleOnPress = () => {
.....
}
<SampleListView
data={prop.data}
onPress={this.handleOnPress}
/>
const SampleListView = (props: Props) => {
return (
<FlatList
style={styles.container}
data={props.data}
keyExtractor={item => item.id.toString()}
renderItem={renderItem}
/>
)
}
renderItem = ({ item }: { item: DataSample }) => {
return (
<TouchableWithoutFeedback onPress={props.onPress}>
<View>
....
</View>
</TouchableWithoutFeedback>
)
}
Veuillez faire attention à ces 2 liens.
https://facebook.github.io/react-native/docs/flatlist
Les différences sont, en donnant le rappel comme paramètre et en ajoutant la couche View.
Le problème avec votre code est ceci onPress={props.onPress}
votre fonction renderItem
ne sait pas (accessoires) tout ce qu'elle sait, c'est le paramètre item qui lui est transmis.
Si tu fais ça
onPress={() => alert("clicked")}
ça va marcher. Soit passez la fonction Press via vos données ou liez votre fonction renderItem
dans votre constructeur, puis appelez
onPress={() => this.props.onPress()}