《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)
}
相关推荐
程序员爱钓鱼2 分钟前
Node.js 编程实战:路由与中间件
前端·后端·node.js
程序员爱钓鱼5 分钟前
Node.js 编程实战:Express 基础
前端·后端·node.js
Cat God 00714 分钟前
完整静态工具网站(尝试)
前端·html
WindrunnerMax16 分钟前
从零实现富文本编辑器#9-编辑器文本结构变更的受控处理
前端·架构·github
Mintopia30 分钟前
静态内容页该用HTML还是Next.js展示更好
前端·html·next.js
LYFlied37 分钟前
【每日算法】LeetCode 226. 翻转二叉树
前端·算法·leetcode·面试·职场和发展
无名无姓某罗38 分钟前
jQuery 请求 SpringMVC 接口返回404错误排查
前端·spring·jquery
霁月的小屋41 分钟前
Vue响应式数据全解析:从Vue2到Vue3,ref与reactive的实战指南
前端·javascript·vue.js
李少兄1 小时前
深入理解 Java Web 开发中的 HttpServletRequest 与 HttpServletResponse
java·开发语言·前端
holidaypenguin1 小时前
antd 5 + react 18 + vite 7 升级
前端·react.js