You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo Router问题:同文件夹内用router.push未入栈反而替换页面

Expo Router router.push 导航异常:同文件夹页面跳转直接替换当前页

问题

使用Expo Router的router.push导航到同文件夹内的新页面时,页面没有被添加到导航栈,而是直接替换了当前页面,导致无法通过返回键回到上一页。

原因

Expo Router的路由匹配逻辑默认将**同层级(同文件夹)**的路由视为同一导航栈节点的不同状态,而非独立页面。此时调用push会被识别为栈内路由更新,而非添加新的栈条目。

解决办法

1. 给目标文件夹添加独立栈布局

在目标页面所在的文件夹中创建_layout.tsx,用Stack组件包裹,强制该层级为独立导航栈:

// app/目标文件夹/_layout.tsx
import { Stack } from 'expo-router';

export default function FolderLayout() {
  return <Stack />;
}

配置后,同文件夹内的页面跳转就会触发标准的push行为,新页面会被加入导航栈。

2. 使用绝对路由路径

调用router.push时,使用完整的绝对路径,而非相对路径:

// 错误写法(相对路径)
router.push('./new-page');

// 正确写法(绝对路径)
router.push('/目标文件夹/new-page');

绝对路径会明确告诉Expo Router这是一个新的栈条目,避免被识别为当前页面的状态更新。

3. 确认未误用router.replace

检查代码,确保确实调用的是router.push而非router.replace——后者本身就是用来替换当前栈条目的。

验证

修改后跳转页面,点击返回键:如果能回到原页面,说明新页面已成功加入导航栈;若仍直接退出,需检查路由布局配置或路径写法是否正确。

内容的提问来源于stack exchange,提问作者Andrea Verrecchia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:52:36