UniApp 页面跳转完全指南:5 种路由方式详解与实战对比

作者:编程随想_Code日期:2026/4/6

前言

在 UniApp 开发中,页面间的跳转是最常见的操作之一。UniApp 提供了 5 种路由 API,分别对应不同的跳转场景。选错跳转方式轻则体验变差,重则出现"无法返回""Tab 页跳转失败"等让人头疼的 bug。

本文将逐一讲解 5 种跳转方式的原理、适用场景与代码示例,并附上横向对比表,方便日常查阅。


一、uni.navigateTo — 保留式跳转

最常用的跳转方式。跳转到新页面时,当前页面并不会被销毁,而是压入页面栈(page stack),用户可以通过左滑或返回按钮回到上一页。

适用场景:列表页 → 详情页、表单页 → 确认页、所有需要支持返回的场景。

1// 普通跳转
2uni.navigateTo({
3  url: '/pages/detail/index?id=1&type=alarm',
4  success(res) {
5    console.log('跳转成功')
6  },
7  fail(err) {
8    console.log('跳转失败', err)
9  }
10})
11

目标页面通过 onLoad(options) 接收参数:

1onLoad(options) {
2  const id = options.id     // '1'
3  const type = options.type // 'alarm'
4}
5

⚠️ 注意:页面栈最多叠加 10 层,超出后 navigateTo 会静默失败。深层嵌套场景请考虑改用 redirectTo


二、uni.redirectTo — 替换式跳转

关闭当前页面再打开新页面,当前页面会被销毁。用户在新页面无法通过返回键回到被关闭的那一页。

适用场景:登录成功 → 首页、表单提交完成 → 结果页、中间跳板页。

1// 登录成功后跳转首页,不允许返回登录页
2uni.redirectTo({
3  url: '/pages/home/index'
4})
5

💡 适合"一次性"操作完成后的跳转,比如支付成功页、注册完成页。防止用户按返回键重复触发操作。


三、uni.reLaunch — 全清重置跳转

关闭所有页面后,打开指定页面。页面栈被完全清空,是"最彻底"的跳转方式。

适用场景:退出登录、切换账号、应用重置。

1// 退出登录,清空所有页面历史,跳回登录页
2uni.reLaunch({
3  url: '/pages/login/index'
4})
5
6// reLaunch 也支持跳转到 tabBar 页面(这点与 redirectTo 不同)
7uni.reLaunch({
8  url: '/pages/home/index'
9})
10

四、uni.switchTab — Tab 页跳转

专门用于跳转到 pages.json 中配置了 tabBar 的页面。跳转时会关闭所有非 tabBar 页面。

适用场景:底部 Tab 切换、业务流程结束回到主页。

1// 跳转到首页 Tab(必须在 pages.json tabBar 中配置)
2uni.switchTab({
3  url: '/pages/home/index'
4})
5
6//  错误:switchTab 不支持 url 传参
7uni.switchTab({
8  url: '/pages/home/index?from=detail' // 参数会被忽略
9})
10

⚠️ 注意switchTab 的 url 不能带参数。如果需要向 Tab 页传递数据,可以通过 Pinia / 全局变量 / Storage 中转。


五、uni.navigateBack — 返回上级

关闭当前页面,返回上一页或多级页面。delta 指定返回层级数,默认为 1。

适用场景:表单取消、弹窗关闭、跨级返回。

1// 返回上一页
2uni.navigateBack({ delta: 1 })
3
4// 返回两层(跳过中间页)
5uni.navigateBack({ delta: 2 })
6
7// 返回时向上一页传递数据(通过 getCurrentPages)
8const pages = getCurrentPages()
9const prevPage = pages[pages.length - 2]
10prevPage.setData?.({ refreshed: true })
11uni.navigateBack({ delta: 1 })
12

六、横向对比总结

API当前页处理页面栈变化能跳 tabBar能传参数典型场景
navigateTo保留叠加(+1)列表→详情
redirectTo关闭替换(±0)登录成功→首页
reLaunch全关清空重置退出登录
switchTab关闭非Tab页重置为Tab是(只能)底部Tab切换
navigateBack关闭回退(-N)间接传返回上页

七、实际开发建议

  1. 优先 navigateTo,保留返回能力,符合用户操作习惯。
  2. 注意页面栈上限,栈深超过 10 层时 navigateTo 会失败,可在关键节点改用 redirectTo
  3. tabBar 页面只能用 switchTab 跳转,用 navigateTo/redirectTo 跳转 tabBar 页会失败或表现异常。
  4. switchTab 传参走 Pinia,禁止在 url 上拼参数,改用全局状态管理传递跨页数据。
  5. reLaunch 谨慎使用,会清空全部历史,用户无法回退,只适合登出/重置等破坏性操作。

💡 在 Vue 3 + TypeScript 项目中,建议封装一个统一的 router 工具函数,内部根据目标路径是否为 tabBar 自动选择 switchTabnavigateTo,减少每次手动判断的心智负担。


如果本文对你有帮助,欢迎点赞收藏~


UniApp 页面跳转完全指南:5 种路由方式详解与实战对比》 是转载文章,点击查看原文


相关推荐


放过自己,降低预期,及时行乐
野生的码农2026/3/29

1 月初,发了篇文章《做好自己的份内工作,等着被裁》,文中提到: 距离公司上次「狼人杀 」,三年之期已到,今年会有「狼人杀 2.0」吗? 之后,因为自己的原因,工作异常忙碌,每天加班到很晚。真不是怕被刀,只是责任心使然,至少要对得起工资,再次断更了很久。 前几天,有位铁粉发来一张某司的毕业证,问我是否安好。很感谢他的关心,只是我没在那个公司。虽然它是合肥本地最知名的公司,但它只是厂大,并不是大厂。 我司只是个小厂,但同样不太平。都怪我这破嘴,就跟开了光似的。那篇文章发出后仅一周,狼人真的再次


HTML和CSS和JavaScript的区别
漫随流水2026/3/21

一、从代码外观直接区分 1.1 HTML:尖括号包裹的标签 HTML的特点是尖括号<>包围的标签,成对出现(开始标签和结束标签)。 <div>这是一个div容器</div> <p>这是一个段落</p> <h1>这是一个标题</h1> <img src="图片.jpg"> <!-- 自闭合标签 --> <a href="链接.html">这是一个链接</a> <table>...</table> <form>...</form> 识别口诀:看到<xxx>和</xxx>,这就是HTML。


音视频教程-第二节
glumes2026/3/13

音视频系列教程 课程目标 学习如何使用 FFmpeg 打开和读取媒体文件的基本信息,理解 AVFormatContext 的作用。 封装格式简介 在开始之前,先简单了解一下封装格式。 我们常见的视频文件(如 .mp4、.mkv、.avi)都是封装格式,它们把视频、音频、字幕等数据打包在一起。可以简单理解为:封装格式是"盒子",里面装着编码后的视频和音频数据。 封装格式 vs 编码格式: 封装格式(如 MP4、MKV):决定如何打包和组织数据 编码格式(如 H.264、AAC):决定如何压缩数


Interspeech2022论文解读 | CUSIDE:一个流式语音识别新框架,刷新SOTA
成都它思科技有限公司2026/3/4

简介 本文介绍清华大学语音处理与机器智能实验室(Speech Processing and Machine Intelligence, SPMI)与美团的联合工作 — CUSIDE:分块、模拟未来、解码的流式语音识别新框架,刷新了目前Aishell-1上流式模型的SOTA(State Of The Art,最好结果)。该工作已被语音领域的国际会议Interspeech2022接收,论文的作者是安柯宇、郑华焕、欧智坚、向鸿雨、丁科、万广鲁。 论文链接: http://oa.ee.


Django 应用 OOM(Out of Memory)故障的定位思路和排查方法
哈里谢顿2026/2/24

二、定位思路总览 1. 确认现象 → 2. 内存分析 → 3. 代码审查 → 4. 复现验证 → 5. 修复优化 ↑___________________________________________________________| 三、详细排查步骤 第一步:确认内存使用趋势 1.1 系统层面监控 # 查看进程内存(RSS:实际物理内存,VSZ:虚拟内存) ps aux --sort=-%mem | head -20 # 实时观察 watch -n 1 'ps -p <PID>


我又开发了一款桌面APP,功能强大
500佰2026/2/16

最近这段时间,开始沉迷一件事,在抖音录制我AI写代码、做实战开发的视频,用opencode / claudecode / Agent skills 等大模型进行AI项目开发,耗时7个晚上,最晚的一次,写到了夜间3点,录制了5个视频,开发消耗AI大模型token 数1500左右。 这次我开发了一款桌面录屏APP,名字叫做focusME,目前已经开发完成,可一键安装在我们的桌面,接下来讲解一下整个开发过程。 开发成果 开发过程 前面我用opencode里面Agent skills去制定产品


Skills.lc 是什么?为什么我会做(用)这个站
HBLOG2026/2/7

在折腾 AI Agent、CLI 工具和各种自动化脚本的过程中,我一直有一个很现实的问题: 好的 skill / workflow 到底该放哪?怎么复用? Prompt 太零散,放在 Notion、Gist、README 里,时间一长就找不到; 不同项目里反复复制粘贴,又很难维护; 看到 GitHub 上有人写了不错的 skill,也不知道怎么发现、怎么用。 Skills.lc 就是在这样的背景下出现的。 它本质上不是“又一个 AI 平台”,而是一个 技能索引与分发站点,专门用来收集、整理


Spring注解秘籍:优雅地使用 @RequestHeader
独泪了无痕2026/1/29

前言   在 Spring Boot 开发中,HTTP 请求头(Header)是客户端和服务器之间传递元数据的重要方式。通过请求头,客户端可以传递认证信息、内容类型、语言偏好等数据。Spring Boot 提供了 @RequestHeader 注解,用于方便地从 HTTP 请求头中提取数据。本文将详细介绍 @RequestHeader 注解的使用方法,包括基本用法、默认值处理、多值头处理以及实际应用场景。 一、注解定义与核心属性 1.1 @RequestHeader 是什么   在构建现代 W


筑牢金融底座:企业级区块链全球化数据库架构设计白皮书
China_Yanhy2026/1/20

📖 前言:Web3 业务的双重账本 在 Web3 业务中,区块链(AMB)是不可篡改的“链上真理”,而关系型数据库(RDS/Aurora)则是承载用户资产、撮合逻辑和KYC信息的“链下业务核心”。对于追求全球化的高频交易项目,数据库的架构设计必须解决两个核心矛盾:跨国访问的物理延迟 与 资金数据的一致性。 第一部分:旗舰方案 —— Amazon Aurora Global Database (深度解析) 这是针对跨国交易所(如币安、Coinbase 模式)的首选架构。 1. 核心架构


Ansible自动化(十五):加解密详解
cly12026/1/12

Ansible Vault 是 Ansible 提供的一套用于保护敏感数据的机制,可以对各类配置文件进行加密,防止敏感信息(如密码、私钥、API 密钥等)以明文形式暴露在代码仓库或配置文件中。 一、为什么需要 Ansible 加密? 场景说明: Playbook 中包含数据库密码、API Token、SSH 私钥等敏感信息Inventory(主机清单)中直接写入了连接密码(如 ansible_password)变量文件(vars/main.yml)中包含机密配置 ✅ Ansible Vaul

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客