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 嵌入堆栈导航器的选项 属性