我有下面的导航堆栈。我正在尝试从登录导航到注册。一切似乎在 Android 模拟器上运行得很好。但是当我尝试在博览会客户端上的 Android 手机上导航时,应用程序崩溃了。没有错误,即使打开了异常暂停,它甚至不会命中调试器。
以下是栈的定义:
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import LoginScreen from './LoginScreen';
import SignUpPhone from './SignUpPhone';
import { PostJobInfo, RoutePaths } from '../../shared/models/model';
const Stack = createStackNavigator();
const AuthStack = (): JSX.Element => (
<Stack.Navigator initialRouteName={RoutePaths.login}>
<Stack.Screen name={RoutePaths.login} component={LoginScreen} />
<Stack.Screen
name={RoutePaths.signUp}
component={SignUpPhone}
options={{
title: 'Sign Up',
}}
/>
</Stack.Navigator>
);
export default AuthStack;
很奇怪,我以为这是目标屏幕的问题,所以我删除了注册中的所有代码,只留下了一个简单的
<Text>
,但应用程序仍然崩溃了。我什至设置了 initialRouteName
进行注册并且它有效。
然后我尝试从注册组件导航登录,但它再次崩溃。我已经重新安装了所有软件包,但没有用。问题是它到达了目标屏幕,我在目标屏幕中添加了
console.logs
并打印出来了。
我完全傻眼了,过去几周一直在解决这个问题,非常感谢任何帮助。
套餐:
"@react-navigation/native": "6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"@react-navigation/stack": "^5.14.5",
"expo": "~41.0.1",
"react-native-safe-area-context": "3.2.0",
"react-native-screens": "~3.0.0",
由于问题有点长,我已经在这个stack blitz中包含了登录和注册的代码,(注意我刚刚为项目无法运行的代码添加了它)
好吧,我不知道为什么,但正是
attemptInvisibleVerification
选项导致了崩溃。
我把它关闭后,导航工作顺利。
该功能是 expo-firebase-recaptcha 包中的实验性功能,因此它是有意义的。
如果有人能解释为什么它会这样做,将非常感激
您需要做的就是,
动画已启用: Platform.OS == 'android' && parseInt(deviceInfoModule.getSystemVersion()) > 9 ?错误的 : 是的,
这就是我解决这个问题的方法
PS。您必须将此代码片段嵌入到堆栈导航器的选项属性中
必须满足
@react-navigation
特定版本及其所有依赖项
"dependencies": {
"react-native-screens": "~3.11.1",
"@react-navigation/stack": "^5.9.0",
"@react-navigation/native": "5.0.5",
"react-native-gesture-handler": "~2.2.1",
"react-native-safe-area-context": "4.2.4",
"@react-native-community/masked-view": "^0.1.0"
}