Expo Router栈导航中initialRouteName无法指定初始路由问题
问题原因与解决办法
原因
Expo Router 中,(initial) 是特殊的路由组命名,它的优先级高于导航配置里的 initialRouteName 设置。这个命名的路由组专门用于指定应用启动时最先渲染的内容,无论你在导航容器中怎么配置初始路由,框架都会优先加载 (initial) 下的页面。
解决办法
根据你的需求选择以下方案:
方案1:保留(initial)作为启动页,完成后跳转至(main)
如果 (initial) 是启动引导页之类的场景,在(initial)的页面中添加导航逻辑,完成后跳转到(main)路由:
import { useRouter } from 'expo-router'; import { useEffect } from 'react'; export default function InitialPage() { const router = useRouter(); // 示例:页面加载后自动跳转,也可通过按钮触发 useEffect(() => { const timer = setTimeout(() => { router.replace('/(main)'); // 用replace避免返回启动页 }, 2000); return () => clearTimeout(timer); }, []); return <div>启动页内容</div>; }
方案2:移除/重命名(initial)路由组
如果不需要这个启动专属的路由组,直接删除(initial)文件夹,或者把它重命名为普通路由组(比如(welcome)),此时你配置的 initialRouteName: '(main)' 就会正常生效,应用启动时会直接加载(main)下的页面。
内容的提问来源于stack exchange,提问作者Nik
相关产品推荐
相关产品推荐

