React Native报TypeError: undefined is not an object错误如何排查解决
报错原因
该TypeError是React Navigation版本不兼容导致的API调用错误:你当前使用的@react-navigation/native属于5.x/6.x版本,而导入的createStackNavigator来自适配4.x旧版本的react-navigation-stack包,两者API规范完全不兼容。
旧版本的createStackNavigator要求传入路由配置对象routeConfigs作为入参,你没有传参直接调用,函数接收到的routeConfigs为undefined,执行Object.keys(routeConfigs)时就触发了该报错。
修复步骤
- 第一步:卸载旧栈导航依赖,安装适配当前版本的栈导航包
普通React Native项目执行:
npm uninstall react-navigation-stack && npm install @react-navigation/stack
Expo项目执行:
npx expo uninstall react-navigation-stack && npx expo install @react-navigation/stack
- 第二步:修改
App.js中的导入语句
将原有导入:import { createStackNavigator } from "react-navigation-stack";
替换为:import { createStackNavigator } from '@react-navigation/stack'; - 可选补充修复:你当前
NavOptions.js中配置了跳转到EatsScreen的逻辑,但该页面并未在栈导航中注册,点击第二个按钮会触发跳转错误,可先暂时移除该选项,或先创建EatsScreen页面并在Stack.Navigator中注册对应路由。
修改完成后重新启动项目即可解决该报错。
内容的提问来源于stack exchange,提问作者chsm19
相关产品推荐
相关产品推荐

