React Native Expo EAS构建后非初始路由触摸事件无响应问题
React Native Expo EAS构建安卓后路由触摸组件无响应问题
问题现象
- 仅StackNavigator的初始路由中,TouchableOpacity、TextInput等触摸组件可正常响应
- 其他路由的触摸组件点击仅会短暂高亮,但
onPress函数不执行、TextInput无法弹出键盘 - 将任意其他路由设为初始路由,该路由功能正常,但跳转至其他路由后仍出现触摸无响应问题
相关代码(App.js中登录/注册模块路由部分)
// in App.js // if (!loggedIn) { return ( <GestureHandlerRootView style={{ flex: 1 }}> <NavigationContainer> <Stack.Navigator initialRouteName="Landing"> <Stack.Screen name="Landing" component={LandingScreen} options={{headerShown: false}}/> <Stack.Screen name="Register" component={RegisterScreen} options={ {headerTitle: '', headerStyle: { backgroundColor: theme.PRIMARY_BACKGROUND, elevation: 0, shadowOpacity: 0, }, headerBackTitleVisible: false, headerTintColor: theme.LIGHT_TEXT, }}/> <Stack.Screen name="Login" component={LoginScreen} options={ {headerTitle: '', headerStyle: { backgroundColor: theme.PRIMARY_BACKGROUND, elevation: 0, shadowOpacity: 0, }, headerTitleStyle: { fontFamily: 'SanFrancisco' }, headerBackTitleVisible: false, headerTintColor: theme.LIGHT_TEXT, }} /> </Stack.Navigator> </NavigationContainer> </GestureHandlerRootView> ); // }
依赖版本与问题推测
本次构建时系统提示需引入react-native-gesture-handler,推测问题与此相关,当前依赖版本:
- react-native-gesture-handler: ~2.12.0
- @react-navigation/stack: ^6.3.17
- expo: ~49.0.8
已尝试的解决方法
- 将
import 'react-native-gesture-handler';作为顶层组件的首行导入 - 用
<GestureHandlerRootView>包裹NavigationContainer
重建后问题仍未解决,且Expo无任何报错或警告
更新:我在另一个Expo项目中搭建了最小复现环境,逐个复制组件后未出现问题,两个项目依赖版本完全一致,仅原项目存在该问题,特此记录此"解决方法"供他人参考。
内容的提问来源于stack exchange,提问作者Freddie Moore
相关产品推荐
相关产品推荐

