《UniApp 页面导航跳转全解笔记》

一、前提:UniApp 的页面架构

在 UniApp 中,导航跳转分两类:

  • 页面级跳转pages/ 下的页面)

  • 组件内跳转(如封装的按钮、商品卡片、导航栏内跳转)

组件不能直接使用路由标签 <navigator> 跳转到外部页面(除非放在页面模板中),

所以组件中通常使用 uni.navigateTo()uni.switchTab() 等 API。

🧭跳转方式总览

方法 说明 适用场景
uni.navigateTo() 跳转到非 tabBar 页面,可返回 普通页面跳转
uni.redirectTo() 关闭当前页跳转 替换当前页
uni.switchTab() 跳转到 tabBar 页面 首页、我的、分类等底部导航
uni.reLaunch() 关闭所有页面跳转 登录后跳主页面
uni.navigateBack() 返回上一个页面 返回按钮
<navigator> 模板跳转标签 H5 / 简单页面跳转

二、页面级跳转

✅ 1. 普通页面跳转

javascript 复制代码
// 在组件或页面内
goDetail(id) {
  uni.navigateTo({
    url: `/pages/detail/detail?id=${id}`
  });
}


uni.navigateTo({
  url: '/pages/detail/detail?id=123',
  success: () => console.log('跳转成功'),
  fail: (err) => console.log('跳转失败', err)
})

✅ 2. 跳转到 tabBar 页面

⚠️ 注意:switchTab() 只能跳转到 pages.json 里配置过的 tabBar 页面,否则无效。

javascript 复制代码
goHome() {
  uni.switchTab({
    url: '/pages/index/index'
  });
}

✅ 3. 替换当前页面(登录成功)

javascript 复制代码
loginSuccess() {
  uni.redirectTo({
    url: '/pages/home/home'
  });
}

✅ 4. 清空所有页面并跳转(重启导航栈)

javascript 复制代码
logout() {
  uni.reLaunch({
    url: '/pages/login/login'
  });
}

✅ 5. 返回上一个页面

javascript 复制代码
goBack() {
  uni.navigateBack({
    delta: 1
  });
}
javascript 复制代码
(1) 普通跳转(保留当前页,可返回)
uni.navigateTo({
  url: '/pages/home/home?id=123', // 支持路径+参数
  success: () => console.log('跳转成功'),
  fail: (err) => console.log('跳转失败', err)
});
 
(2) 重定向(关闭当前页,不可返回)
uni.redirectTo({
  url: '/pages/login/login'
});
 
(3) TabBar 页面跳转
uni.switchTab({
  url: '/pages/tabbar/index'
});
 
(4) 返回上一页
uni.navigateBack({
  delta: 1 // 返回层数
});
 
 

三、组件方式实现跳转 <navigator>

1、<navigator>是什么?

<navigator> 是 UniApp 的内置导航组件

它在 H5、小程序、App 端都能直接使用,作用类似于 HTML 的 <a> 标签。

✅ 它的主要功能是:点击后 自动跳转到指定页面,无需写 JS 代码。

官网:navigator | uni-app官网

javascript 复制代码
<navigator url="/pages/about/about">
  <view class="btn">跳转到关于页面</view>
</navigator>

点击后会自动跳转到 /pages/about/about 页面。

⚠️ 注意:

目标页面必须已经在 pages.json 中注册,否则跳转无效。

2、常用属性说明

属性名 类型 说明
url String 跳转的目标路径(必须是已注册的页面)
open-type String 跳转方式(默认 navigate
hover-class String 点击时的样式类名
hover-start-time Number 按住后多久出现点击态,默认 50ms
hover-stay-time Number 手指松开后保留点击态时间,默认 600ms
target String 指定跳转的目标,默认 self(当前小程序)

open-type(跳转类型):

说明 是否返回上页
navigate 保留当前页跳转
redirect 关闭当前页跳转
switchTab 跳转到 tabBar 页面
reLaunch 关闭所有页面后打开
navigateBack 返回上一个页面
exit 退出应用(仅 App)
javascript 复制代码
✅ 示例一:普通跳转
<navigator url="/pages/detail/detail" open-type="navigate">
  查看详情
</navigator>

✅ 示例二:跳转到 tabBar 页面 (只能跳转到 pages.json 中 tabBar 列表里定义的页面。)
<navigator url="/pages/index/index" open-type="switchTab">
  回到首页
</navigator>

✅ 示例三:重启并跳转(清空栈)
<navigator url="/pages/login/login" open-type="reLaunch">
  返回登录页
</navigator>

✅ 示例四:返回上一页
<navigator open-type="navigateBack" delta="1">
  返回
</navigator>

💡五、hover-class(点击态样式)
<navigator
  url="/pages/detail/detail"
  hover-class="active"
>
  <view class="btn">跳转详情</view>
</navigator>

<style>
.active {
  opacity: 0.6;
  transform: scale(0.98);
}
</style>

🎯 六、动态参数传递
可以像 URL 一样拼接参数:
<navigator url="/pages/detail/detail?id=123&type=book">
  跳转并传参
</navigator>

在目标页面接收:
onLoad(options) {
  console.log(options.id, options.type)
}
相关推荐
小满zs16 分钟前
Next.js精通SEO第四章(JSON-LD + web vitals)
前端·seo·next.js
云水一下8 小时前
从零开始!VMware安装Fedora Workstation 44桌面系统完整教程
前端
小码哥_常9 小时前
安卓黑科技:实现多平台商品详情页一键跳转APP
前端
killerbasd9 小时前
还是迷茫 5.3
前端·react.js·前端框架
不会敲代码110 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
kyriewen10 小时前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai
AC赳赳老秦10 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
kyriewen10 小时前
代码写成一锅粥?3个设计模式让你的项目“起死回生”
前端·javascript·设计模式
千寻girling11 小时前
《 Git 详细教程 》
前端·后端·面试
之歆12 小时前
DAY08_CSS浮动与行内块布局实战指南(下)
前端·css