React 导航:导航导致应用程序在 expo 客户端上崩溃
React navigation: navigate causes app to crash on expo client
我有以下导航堆栈。我正在尝试从登录导航到注册。在 android 模拟器上似乎一切正常。但是当我尝试在 expo 客户端上的 android phone 上导航时,应用程序崩溃了。没有错误,它甚至没有命中调试器,即使异常暂停是打开的。
栈的定义如下:
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。您必须将此 code-snippet 嵌入堆栈导航器的选项 属性
我有以下导航堆栈。我正在尝试从登录导航到注册。在 android 模拟器上似乎一切正常。但是当我尝试在 expo 客户端上的 android phone 上导航时,应用程序崩溃了。没有错误,它甚至没有命中调试器,即使异常暂停是打开的。
栈的定义如下:
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。您必须将此 code-snippet 嵌入堆栈导航器的选项 属性