162 votes

React Native : View onPress ne fonctionne pas

Je suis confronté à un problème étrange. Dans mon application react native, si je mets onPress à l'événement View il n'est pas déclenché mais si je mets la même chose à Text à l'intérieur de View il fait feu. Qu'est-ce que je rate 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 en est-il ainsi ? Est-ce un problème avec React Native ? J'utilise la version 0.43

2voto

Biplov Kumar Points 298

Voir ne fournit pas de prop onPress. En option vous pouvez utiliser

<View onStartShouldSetResponder={() => console.log("View click")}>
  <Text>X</Text>
</View>

Sinon, vous pouvez utiliser TouchableOpacity

<TouchableOpacity onPress={this._onPress}>
<Text>X</Text>
</TouchableOpacity>

2voto

iqbal Points 19

2021

Si vous recherchez un moyen plus complet et plus évolutif de gérer les entrées tactiles, consultez le site Web de la Commission européenne. Pressable API.

Fuente: https://reactnative.dev/docs/touchablewithoutfeedback

1voto

thunder775 Points 11

Nous pouvons faire en sorte que la vue ait une fonction onPress. onStartShouldSetResponder y onResponderGrant

<View
    onStartShouldSetResponder={() => true}
    onResponderGrant={() => console.log("view pressed")}
  >
</View>

1voto

AIK Points 228

Vous pouvez utiliser TouchableOpacity à cette fin.

<TouchableOpacity onPress={() => {your code here}}>
    //Your inner views here
</TouchableOpacity>

-1voto

Ajay Bhargav Points 9

Pour tous ceux qui cherchent une solution à ce problème, à partir de la RN 0.63, il y a un nouvel outil de gestion de la qualité. Pressabe api. Elle aurait pu être déployée quelques versions plus tôt, mais elle fonctionne parfaitement pour ce type d'utilisation.

<Pressable onPress={onPressFunction}>
    <Text onPress={() => {
        console.log('works');
    }}>X</Text>
</Pressable>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X