Je suis confronté à un problème étrange. Dans mon application native react, si je mets un onPress
événement sur View
celui-ci, il n'est pas déclenché mais si je le mets à l' Text
intérieur View
, il se déclenche. Qu'est-ce que j'oublie ici?
<View style={{backgroundColor: "red", padding: 20}}>
<Text onPress={()=> {
console.log('works');
}
}>X</Text>
</View>
<View style={{backgroundColor: "red", padding: 20}} onPress={()=> {
console.log('does not work');
}
}>
<Text>X</Text>
</View>
Pourquoi cela est-il ainsi? Est-ce un problème avec React Native? J'utilise la version 0.43
react-native
react-native-android
mehulmpt
la source
la source
Vous pouvez envelopper la vue avec un
TouchableWithoutFeedback
, puis utiliseronPress
et des amis comme d'habitude. De plus, vous pouvez toujours bloquerpointerEvents
en définissant l'attribut sur la vue enfant, il bloque même les événements de pointeur sur le parentTouchableWithoutFeedback
, c'est intéressant, c'était mon besoin sur Android, je n'ai pas testé sur iOS:https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html
la source
pointerEventsNone
sur le bloc enfant appuie-t-il sur le parent enveloppeur?Vous pouvez utiliser TouchableOpacity, TouchableHighlight, TouchableNativeFeedback, pour y parvenir. Le composant View ne fournit pas onPress comme accessoires. Vous utilisez donc ces derniers au lieu de cela.
la source
Vous pouvez également fournir onStartShouldSetResponder à votre vue, comme ceci:
la source