Expo Router:Tab布局内跳转至Stack屏幕的问题排查与解决
Expo Router Tabs嵌套Stack导航问题解决
直接修改两处代码即可解决:
根Tabs布局(app/_layout.tsx)
删掉href配置,Expo Router会自动关联settings目录的路由入口,代码示例:import { Tabs } from 'expo-router'; import Settings from '@/components/Settings'; // 替换为你的图标组件实际路径 export default function RootLayout() { return ( <Tabs> <Tabs.Screen name="index" options={{ title: '首页' }} /> <Tabs.Screen name="settings" options={{ title: '设置', tabBarIcon: ({ color, size }) => ( <Settings color={color} size={size} /> ), }} /> </Tabs> ); }Settings目录的Stack布局(app/settings/_layout.tsx)
保持Stack正常包裹index页面,配置嵌套路由:import { Stack } from 'expo-router'; export default function SettingsLayout() { return ( <Stack> <Stack.Screen name="index" options={{ title: '设置详情' }} // 此处标题为Stack导航栏标题,不影响底部Tab栏 /> </Stack> ); }
问题原因说明:
- 手动设置
href会打乱Expo Router的嵌套路由规则:设为/settings时无法触发正确导航,设为/settings/index则会直接跳过settings/_layout导致路由不匹配错误。 - 外层Tabs必须使用
Tabs.Screen才能控制底部Tab栏的图标和标题,换成Stack.Screen会归嵌套导航管理,无法影响外层Tab栏配置。
内容的提问来源于stack exchange,提问作者Null Head
相关产品推荐
相关产品推荐

