Expo动态路由无法获取本地参数的问题排查求助
Expo动态路由无法获取本地参数的问题排查求助
各位大佬好!我最近在Expo项目里卡到动态路由的坑里了,折腾了好几天都没解决,来这儿求帮忙啦!
我的需求
我想通过动态路由/auth/[screen].tsx来展示不同状态的认证页面,比如welcome、login、register这些。在app/_layout.tsx里,我打算借助认证提供者,在用户未登录时自动跳转到/auth/welcome页面,思路就是用router.replace('/auth/welcome');这类路由跳转方法。
遇到的问题
不管我用哪种本地路由跳转方式,[screen].tsx页面里始终拿不到参数,页面完全是空的:
- 用
router.replace({ pathname: '/auth/[screen]', params: { screen: 'welcome' } });(push方法也试过,结果一样) - 用
<Link href="/auth/login">组件跳转
**但是!**如果用深度链接的方式跳转就完全正常:
- 调用
Linking.openURL('exp://localhost:8081/--/auth/welcome'); - 或者在终端执行命令
xcrun simctl openurl booted exp://localhost:8081/--/auth/register
这时候路由就能正常工作,screen参数也能正确获取到,完全符合预期。
我已经尝试过的排查操作
- 清除项目缓存、完全重启项目这些常规操作都试过了,没用
- 查看项目的
sitemap,显示的是auth/[screen].tsx +not-found.tsx,看起来路由配置是没问题的 - 把布局里的
Slot换成Stack组件,结果还是一样,只是多了个滑动导航的动画而已,参数依旧拿不到
求助
我到底漏了什么关键配置或者细节啊?已经做了最小复现的项目,但还是没找到问题根源,求各位大佬帮忙分析分析!
内容来源于stack exchange
相关产品推荐
相关产品推荐

