TouchableOpacity onPress не работает на Android
У меня есть 3 простых реагирующих компонента
Сначала фактический вид (назовем этот экран A)-
return(
<ImageBackground
...
>
<ScrollView>
<ChildButton
onPress={this.someFunction.bind(this)}
/>
</ScrollView>
</ImageBackground>
)
Тогда есть компонент ChildButton ---
return(
<ChildButton>
<Button
style={...someStyleObject}
onPress={this.props.onPress}
>
</Button>
</ChildButton>
)
а затем есть компонент Button ---
return (
<TouchableOpacity
onPress={this.props.onPress}
>
{this.props.children}
</TouchableOpacity>
)
Основная проблема здесь в том, что мой onPress не вызывается с экрана A, только на Android. На iOS работает нормально. Каковы возможные причины здесь?
Примечание. Я поместил консоли в компонент ChildButton и Button, и они не печатаются.
0 ответов
Я столкнулся с этой проблемой, когда случайно импортировал TouchableOpacity
из "реагировать-родной-жест-обработчик" вместо "реагировать-родной". Если это так, измените такTouchableOpacity
импортируется из "react-native" и удалите импорт из "react-native-gesture-handler", и он должен работать!
Я также столкнулся с этой проблемой, когда унаследовал текущий проект RN. Я не понимал, что у нас установлен этот пакет "response-native-gesture-handler", и случайно позволил VS Code автоматически импортировать его.
Всегда проверяйте свой импорт!:)
import {TouchableOpacity} from 'react-native'
works fine in both android and iOS
import {TouchableOpacity} from 'react-native-gesture-handler'
Does not work in android, but works in iOS.
Так что лучше, чтобы пользователь реагировал на собственный импорт.
Событие onPress не вызывается в Android, если TouchableOpacity импортирован из обработчика response-native-gesture.