Mam dziwny problem. W mojej natywnej aplikacji React, jeśli onPress
ustawię na View
to zdarzenie, nie jest wyzwalane, ale jeśli ustawię to samo na Text
wnętrze View
, zostanie uruchomione . Czego tu brakuje?
<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>
Dlaczego tak jest? Czy to problem z React Native? Używam wersji 0.43
react-native
react-native-android
mehulmpt
źródło
źródło
Możesz zawinąć widok,
TouchableWithoutFeedback
a następnie użyćonPress
i przyjaciół jak zwykle. Możesz również nadal blokowaćpointerEvents
, ustawiając atrybut na widoku dziecka, blokuje nawet zdarzenia wskaźnika na rodzicaTouchableWithoutFeedback
, jest to interesujące, taka była moja potrzeba na Androidzie, nie testowałem na iOS:https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html
źródło
pointerEventsNone
blok dziecka naciska na zawijającego rodzica?Aby to osiągnąć, możesz użyć TouchableOpacity, TouchableHighlight, TouchableNativeFeedback. Komponent widoku nie udostępnia onPress jako rekwizytów. Więc używasz ich zamiast tego.
źródło
Alternatywnie możesz również podać onStartShouldSetResponder do swojego widoku, na przykład:
źródło