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.

Другие вопросы по тегам