首页 > 其他分享 >什么?掌握 UniApp 页面路由竟如此简单!

什么?掌握 UniApp 页面路由竟如此简单!

时间:2024-11-16 19:14:41浏览次数:3  
标签:返回 UniApp API tabBar 跳转 uni 路由 页面

引言

UniApp 是一个跨平台的开发框架,提供了很多实用的 API 来帮助开发者处理跨平台的需求,尤其是页面路由相关的功能。页面路由 API 使得页面跳转、返回等操作变得更加简单且高效,特别适用于在小程序、H5、App 等平台之间进行页面管理。本文将详细介绍 UniApp 提供的页面路由相关 API,帮助你在项目中更好地实现页面跳转、返回等功能。


1. 页面路由 API 概述

UniApp 页面路由 API 允许开发者在不同页面之间进行跳转、返回、传递参数等操作。这些 API 提供了高度统一的接口,使得跨平台开发变得更加容易。常用的页面路由 API 包括:

  • 页面跳转
  • 页面返回
  • 获取页面信息
  • 关闭页面

接下来,我们将深入介绍每一个 API 的使用方法。


2. 页面跳转相关 API

2.1 uni.navigateTo

uni.navigateTo 用于打开一个新页面,但不关闭当前页面。适用于需要在当前页面之上打开新页面的场景。

  • 功能:打开新页面
  • 返回uni.navigateTo 会返回一个 navigationBar 的对象,用于控制当前页面的导航栏。
uni.navigateTo({
  url: '/pages/detail/detail?id=123'  // 目标页面路径,可以带参数
});

说明

  • url:目标页面的路径,支持传递查询参数。
  • url 中的路径可以是相对路径(如 '/pages/detail/detail')或者绝对路径。
2.2 uni.redirectTo

uni.redirectTo 用于关闭当前页面并跳转到目标页面。适用于用户登录、注册等操作完成后跳转到新页面的场景。

  • 功能:关闭当前页面并跳转
  • 返回uni.redirectTo 不会返回页面对象,因为它会直接跳转到目标页面并关闭当前页面。
uni.redirectTo({
  url: '/pages/login/login'  // 目标页面路径
});

说明

  • url:目标页面的路径,跳转后不会返回当前页面。
2.3 uni.switchTab

uni.switchTab 用于跳转到 tabBar 页面。这个 API 仅适用于在 tabBar 页面之间跳转。

  • 功能:跳转到 tabBar 页面
  • 返回uni.switchTab 会跳转到指定的 tabBar 页面。
uni.switchTab({
  url: '/pages/home/home'  // 跳转到指定 tabBar 页面
});

说明

  • url:目标 tabBar 页面路径,必须是配置文件中的 tabBar 页面。
2.4 uni.reLaunch

uni.reLaunch 用于关闭所有页面并跳转到目标页面。适用于应用启动后的重定向,比如用户登录后跳转到首页。

  • 功能:关闭所有页面并跳转
  • 返回uni.reLaunch 不会返回页面对象,因为它会关闭所有页面并跳转到目标页面。
uni.reLaunch({
  url: '/pages/dashboard/dashboard'  // 目标页面路径
});

说明

  • url:目标页面的路径,跳转后不会返回到其他页面。

3. 页面返回相关 API

3.1 uni.navigateBack

uni.navigateBack 用于返回到上一页,可以指定返回的页面层数。

  • 功能:返回上一页面
  • 参数
    • delta:返回的页面层数,默认返回上一页。可以设置为大于 1 的值,返回到更早的页面。
uni.navigateBack({
  delta: 1  // 返回上一页,默认值为1
});

说明

  • delta:表示要返回的页面层数。默认为 1,表示返回上一页面。如果你想返回多个页面层级,可以设置更大的值。
3.2 uni.navigateBack(小程序)

在小程序中,uni.navigateBack 可以通过指定 delta 来返回多个页面。例如,delta: 3 会返回到三层之前的页面。

uni.navigateBack({
  delta: 3  // 返回到倒数第三个页面
});

4. 获取页面信息相关 API

4.1 uni.getCurrentPages

uni.getCurrentPages 用于获取当前页面栈,可以用来获取当前页面和历史页面的信息。

  • 功能:获取当前页面栈
  • 返回:返回一个数组,包含当前栈中所有页面的信息。
const pages = uni.getCurrentPages();  // 获取当前页面栈
console.log(pages);  // 输出当前页面栈信息

说明

  • 返回的数组是当前页面栈的页面对象,每个页面对象包含 routeoptions 等属性。
  • 通过此 API 可以实现页面跳转时记录页面路径和参数。

5. 页面关闭相关 API

5.1 uni.closePage

uni.closePage 用于关闭当前页面。适用于一些需要强制关闭当前页面的场景,例如用户退出时关闭所有页面。

uni.closePage({
  success: function () {
    console.log('页面关闭成功');
  }
});

说明

  • 该 API 适用于通过页面栈管理应用的场景。

6. 页面跳转的常见问题与解决方案

  1. 为什么 uni.navigateTo 不能跳转到 tabBar 页面?
    uni.navigateTo 不能跳转到 tabBar 页面。要跳转到 tabBar 页面,应该使用 uni.switchTab

  2. 如何在跳转时携带参数?
    在跳转时可以通过 URL 查询字符串来传递参数。例如:

    uni.navigateTo({
      url: '/pages/detail/detail?id=123&name=John'
    });
    

    目标页面可以通过 this.$routeuni.getStorage 获取传递的参数。

  3. 如何处理页面跳转的返回值?
    UniApp 的页面跳转 API(如 uni.navigateTouni.redirectTo 等)都返回一个 Promise 对象,可以通过 .then()async/await 来处理返回值或跳转成功的回调。


总结

UniApp 的页面路由 API 提供了多种便捷的接口,帮助开发者实现页面跳转、返回、获取页面信息等功能。通过合理使用这些 API,可以高效地管理页面之间的跳转与状态,提升用户体验。在实际开发中,可以根据需求选择合适的 API,如跳转到新页面时使用 uni.navigateTo,跳转到 tabBar 页面时使用 uni.switchTab,返回上一页面时使用 uni.navigateBack 等。

希望本文能帮助你更好地掌握 UniApp 的页面路由 API,提升开发效率!

标签:返回,UniApp,API,tabBar,跳转,uni,路由,页面
From: https://blog.csdn.net/weixin_43716733/article/details/143821581

相关文章

  • 第七章 利用CSS和多媒体美化页面
    7.1CSS链接的美化        在HTML5中,<a></a>标签始终定义超链接,用于从一张页面链接到另一张页面。<a>元素最重要的属性是href属性,它指示链接的目标,如果未设置href属性,后续多个属性均无法使用,则只是超链接的占位符。在谷歌浏览器中,鼠标悬停链接时无明显效果。  ......
  • go fiber:路由中间件
    一,目录结构:二,代码1,中间件代码packagemiddlewareimport( "fmt" "github.com/gofiber/fiber/v2" "industry/config")//token校验funcCheckUser(c*fiber.Ctx)error{ token:=c.Query("token") fmt.Println("token:"......
  • 【微信小程序毕业设计】基于uniapp社会实践小程序的设计与实现
    概述:某211院校在校计算机导师,让我成为您的校外毕业指导老师。为您的毕业之旅保驾护航,专业为大家做好毕业选题,课外辅导等工作。文章末尾处有资料的获取方式。点击获取即可。技术描述:后端实现-使用node.js作为开发语言,koa2作为接口开发框架数据库-mysql管理端-vue2.0编写管......
  • 基于SpringBoot+Vue+uniapp的中小型医院网站的详细设计和实现(源码+lw+部署文档+讲解
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 【微信小程序】page.json配置-pages页面路由
    在微信小程序中,pages.json文件是用于配置应用的全局样式和页面路由的重要文件。通过合理配置pages数组,可以有效地管理小程序的页面路径、窗口表现、网络超时时间等。本文将详细介绍pages数组的配置项及其用法,并提供一些最佳实践。1.pages数组概述pages数组用于定......
  • Vue 3实现一个带有左侧导航菜单的页面。该页面包含一个类似的增删改查(CRUD)功能模块。
    效果图:实现步骤:项目结构我们将构建一个简单的Vue3项目,包含以下内容:左侧导航栏:用于切换不同页面或模块。右侧内容区域:用于展示不同模块的内容(如小组成员管理)。代码实现1.创建主页面组件App.vue首先,在App.vue中定义左侧导航栏和内容区域:<template><divid="app"......
  • 网页直播/点播播放器EasyPlayer.js网页web无插件播放器渲染页面出现倒挂的原因排查
    EasyPlayer.js网页web无插件播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式,也能支持WebSocket-FLV、HTTP-FLV、HLS(m3u8)、WebRTC、ws......
  • <a-modal>打开页面报错Ancestor with aria-hidden
    报错信息Blockedaria-hiddenonanelementbecauseitsdescendantretainedfocus.Thefocusmustnotbehiddenfromassistivetechnologyusers.Avoidusingaria-hiddenonafocusedelementoritsancestor.Considerusingtheinertattributeinstead,whichwi......
  • 鸿蒙Navigation拦截器实现页面跳转登录鉴权方案
    我们在进行页面跳转时,很多情况下都得考虑登录状态问题,比如进入个人信息页面,下单交易页面等等。在这些场景下,通常在页面跳转前,会先判断下用户是否已经登录,若已登录,则跳转到相应的目标页面,若没有登录,则先跳转到登录页面,然后等着获取登录状态,若登录页面关闭时,能获取到已登录,则继续跳......
  • 【开发】若页面一次性接口请求上百个,阁下又当如何应对
    需求:假如页面一次性请求有上百个,你应该如何处理这种请求并发?答:soeasy!循环请求?肯定是不对的,否则一次性并发上百次请求,差点的服务器得崩溃了,我甚至一度以为你是在搞Dos攻击。我们可以通过任务队列的缓存来合理控制并发数据。我们知道浏览器发起的请求最大并发数量一般都是6~8......