适配react@18.3.1与react-native@0.76.5的导航包兼容版本咨询
核心问题分析
你当前的导航依赖存在版本不匹配:@react-navigation/native-stack 使用了7.x版本,但 @react-navigation/native 和 @react-navigation/bottom-tabs 仍为6.x版本。React Navigation的所有子包必须与主包@react-navigation/native保持相同主版本号,否则会因API不兼容导致应用崩溃。
你的环境配置:
- react: 18.3.1
- react-native: 0.76.5(对应Expo 52)
兼容版本推荐
方案一:稳定的React Navigation 6.x全版本
将所有导航子包统一为6.x版本,适配性更成熟:
{ "@react-navigation/native": "^6.1.18", "@react-navigation/native-stack": "^6.11.0", "@react-navigation/bottom-tabs": "^6.6.1", "@react-navigation/stack": "^6.3.17", "@react-navigation/drawer": "^6.6.6" }
配套依赖保持现有版本即可:
- react-native-gesture-handler: ~2.21.0
- react-native-safe-area-context: ^4.12.0
- react-native-screens: ~4.4.0
方案二:升级到React Navigation 7.x最新版本
统一升级所有导航包到7.x,使用最新特性:
{ "@react-navigation/native": "^7.0.0", "@react-navigation/native-stack": "^7.2.0", "@react-navigation/bottom-tabs": "^7.0.0", "@react-navigation/stack": "^7.0.0", "@react-navigation/drawer": "^7.0.0" }
Expo 52完全支持React Navigation 7.x,无需调整其他核心依赖。
修复步骤
- 删除项目根目录下的
node_modules文件夹和package-lock.json(或yarn.lock)文件 - 修改
package.json中的导航依赖版本为上述任一方案 - 执行安装命令:
npm install # 或 yarn install - 清除Expo缓存并重启项目:
npx expo start --clear
替代方案:使用Expo Router
如果不想手动处理依赖兼容,推荐使用Expo Router——Expo官方的路由方案,与Expo版本深度绑定,自动处理依赖兼容问题,支持页面路由、底部标签栏、栈导航等所有常用导航模式,配置更简洁。
内容的提问来源于stack exchange,提问作者user29069351
相关产品推荐
相关产品推荐

