React Native Expo路由文件移入文件夹后路由不存在的解决方法
问题修复方案
你的问题出在Stack路由配置的名称与实际文件路径不匹配:
你在_layout.tsx里指定的settings路由,对应的是app/settings.tsx文件,但你的实际路由文件是app/settings/index.tsx。Expo Router中,文件夹下的index.tsx会被映射为该文件夹的根路由(即/settings),但在Stack组件的Screen配置中,name属性需要严格匹配文件相对于app文件夹的路径(不含后缀)。
修复步骤
修改_layout.tsx中的Stack配置,将路由名称改为settings/index,同时更新initialRouteName:
import { Stack } from "expo-router"; export default function RootLayout() { return ( <Stack initialRouteName="settings/index"> <Stack.Screen name="settings/index" /> <Stack.Screen name="index" options={{ headerShown: false }} /> </Stack> ); }
补充说明
- 这样配置后,路由路径依然是
/settings,不会变成/settings/index,因为index.tsx本身就是文件夹的默认入口路由。 - 后续如果在
settings文件夹下添加子路由(比如app/settings/profile.tsx),对应的Stack.Screen名称需要写settings/profile,路由路径为/settings/profile。
内容的提问来源于stack exchange,提问作者David Jentjens
相关产品推荐
相关产品推荐

