5月30日 19:40

Expo Router 文件系统路由是如何工作的?

Expo Router 是 Expo 官方推荐的路由方案,它把 app 目录里的文件映射成页面路径:app/user/[id].tsx 对应 /user/:id_layout.tsx 负责给同一层页面套 Stack、Tabs、Modal 或全局 Provider。它底层仍使用 React Navigation,不是另起炉灶,而是把手写 screen 配置改成文件约定。

追问

Expo Router 底层依然依赖 React Navigation,导航能力并没有少。区别是通过文件结构生成路由,适合页面多、需要深链或同时支持 Web 的 Expo 项目。

文件系统路由是怎么工作的?

app/index.tsx 是首页,app/settings.tsx/settingsapp/user/[id].tsx 是动态路由。(tabs) 目录用于分组,不直接出现在 URL 里。

动态参数应该怎么读取?

常用 useLocalSearchParams 读取当前页面参数。参数通常是字符串或字符串数组,接口需要数字时要自己转换和校验。

深度链接和 Web URL 有哪些坑?

改 scheme、Universal Links、Android App Links 后,通常要重新打 Development Build 或生产包验证。Expo Go 能跳不代表商店包配置正确。

项目变大后怎么组织路由?

把认证、Tabs、弹窗、业务模块分到不同分组里,让每个 _layout.tsx 只管当前层级的导航。

写段代码

tsx
const { id } = useLocalSearchParams<{ id: string }>(); router.push(`/user/${id}/orders`);
标签:Expo