uniapp 不同路由之间的区别
在UniApp中,路由跳转是实现页面导航的核心功能,常见的路由跳转方式包括navigateTo、redirectTo、reLaunch、switchTab和navigateBack。这些方法在跳转行为和适用场景上有所不同。
一、路由跳转的类型与区别
1. uni.navigateTo(OBJECT)
- 特点:
- 保留当前页面,跳转到应用内的某个页面。
- 可以通过
uni.navigateBack()
返回上一个页面。 - 会生成新的页面实例,页面栈最多十层。
- 限制:
- 不能跳转到 tabBar 页面。
- 页面栈超过十层后无法继续跳转。
- 应用场景:
- 适合需要返回操作的页面跳转,如从列表页跳转到详情页。
2. uni.redirectTo(OBJECT)
- 特点:
- 关闭当前页面,跳转到应用内的某个页面。
- 无法通过返回按钮回到上一个页面。
- 会销毁当前页面实例,减少内存占用。
- 限制:
- 同样不能跳转到 tabBar 页面。
- 应用场景:
- 登录成功后跳转到主页,防止用户返回登录页。
- 表单提交成功后跳转到结果页。
3. uni.reLaunch(OBJECT)
- 特点:
- 关闭所有页面,打开应用内的某个页面。
- 页面栈会被清空,只剩新打开的页面。
- 无论从哪个页面跳转,结果页的返回逻辑都是一致的。
- 应用场景:
- 退出登录时跳转到登录页。
- 应用初始化时跳转到引导页或主页。
4. uni.switchTab(OBJECT)
- 特点:
- 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
- tabBar 页面的生命周期比较特殊,切换时不会销毁。
- 只能跳转到配置在
pages.json
中的 tabBar 页面。
- 应用场景:
- 底部导航栏的页面切换。
5. uni.navigateBack(OBJECT)
- 特点:
- 关闭当前页面,返回上一页面或多级页面。
- 通过
delta
参数指定返回的级数。 - 不会创建新的页面实例,性能较好。
- 应用场景:
- 在详情页点击返回按钮回到列表页。
- 通过参数控制返回多级页面。
二、不同跳转方式的对比表
方法 | 是否关闭当前页面 | 是否可返回 | 是否支持 tabBar 页面 | 页面栈变化 | 生命周期影响 |
---|---|---|---|---|---|
uni.navigateTo | 否 | 是 | 否 | 增加一个页面实例 | 触发新页面的 onLoad |
uni.redirectTo | 是 | 否 | 否 | 替换当前页面实例 | 触发当前页面的 onUnload |
uni.reLaunch | 是 | 取决于目标 | 是 | 清空所有页面,只剩新页面 | 触发所有旧页面的 onUnload |
uni.switchTab | 是 | 否 | 是 | 关闭所有非 tabBar 页面 | tabBar 页面不会销毁 |
uni.navigateBack | 是 | 是 | 否 | 减少指定数量的页面实例 | 触发当前页面的 onUnload |
三、特殊场景下的选择建议
- 需要返回上一页:使用
navigateTo
,配合navigateBack
返回。 - 禁止返回操作:使用
redirectTo
或reLaunch
,例如登录成功后。 - tabBar 页面切换:必须使用
switchTab
,其他方法无效。 - 重置应用状态:使用
reLaunch
,例如退出登录或切换账号。 - 多级返回:使用
navigateBack
并设置delta
参数。
四、注意事项
- 页面栈限制:
navigateTo
的页面栈最多十层,超过后无法继续跳转。- 可以通过
getCurrentPages()
获取当前页面栈信息。
- 生命周期差异:
switchTab
切换到的 tabBar 页面不会触发onLoad
,而是触发onShow
。- 缓存页面(使用
<keep-alive>
)会触发onShow
和onReady
,但不会触发onLoad
。
- 参数传递:
- 跳转时可以通过 URL 参数传递简单数据,如
url: '/pages/detail?id=123'
。 - 复杂数据可以通过全局变量、Vuex 或本地存储传递。
- 跳转时可以通过 URL 参数传递简单数据,如
五、代码示例
// 1. 跳转到非 tabBar 页面(保留当前页)
uni.navigateTo({url: '/pages/detail/detail?id=123'
});// 2. 关闭当前页并跳转
uni.redirectTo({url: '/pages/result/result'
});// 3. 清空所有页面并跳转
uni.reLaunch({url: '/pages/index/index'
});// 4. 跳转到 tabBar 页面
uni.switchTab({url: '/pages/tabBar/home/home'
});// 5. 返回上一页
uni.navigateBack({delta: 1
});
掌握这些路由跳转方式的区别,能让你在开发 UniApp 应用时更加得心应手,根据不同的场景选择最合适的跳转方式。
相关文章:
uniapp 不同路由之间的区别
在UniApp中,路由跳转是实现页面导航的核心功能,常见的路由跳转方式包括navigateTo、redirectTo、reLaunch、switchTab和navigateBack。这些方法在跳转行为和适用场景上有所不同。 一、路由跳转的类型与区别 1. uni.navigateTo(OBJECT) 特点࿱…...
mysql 已经初始化好,但是用 dbeaver 连接报错:Public Key Retrieval is not allowed
MySQL 已经初始化好,但用 DBeaver 连接时报错 “Public Key Retrieval is not allowed”,这是 MySQL 8 默认认证插件 caching_sha2_password 导致的安全限制问题。解决方法如下: 解决方案 1. 在 DBeaver 中开启 allowPublicKeyRetrievaltru…...
Spring 项目无法连接 MySQL:Nacos 配置误区排查与解决
在开发过程中,我们使用 Nacos 来管理 Spring Boot 项目的配置,其中包括数据库连接配置。然而,在实际操作中,由于一些概念的混淆,我们遇到了一些连接问题。本文将分享我的故障排查过程,帮助大家避免类似的错…...

仿腾讯会议——创建房间加入房间
等等...

Linux系统入门第十二章 --Shell编程之正则表达式
一、正则表达式 之前学习了 Shell 脚本的基础用法,已经可以利用条件判断、循环等语句编辑 Shell脚本。接下来我们将开始介绍一个很重要的概念-正则表达式(RegularExpression,RE) 1.正则表达式的定义 正则表达式又称正规表达式、常规表达式。在代码中常…...

[架构之美]Spring Boot多环境5种方案实现Dev/Test/Prod环境隔离
[架构之美]Spring Boot多环境5种方案实现Dev/Test/Prod环境隔离(十六) 摘要:本文深入剖析Spring Boot多环境配置的5种实现方案,涵盖YAML分组配置、Maven Profile集成、Kubernetes适配等企业级实践,并附赠配置加密方案…...

C++STL——stack,queue
stack与queue 前言容器适配器deque 前言 本篇主要讲解stack与queue的底层,但并不会进行实现,stack的接口 queue的接口 ,关于stack与queue的接口在这里不做讲解,因为通过前面的对STL的学习,这些接口都是大同小异的。 …...

解决社区录音应用横屏状态下,录音后无法播放的bug
最近看到社区有小伙伴反映,社区录音应用横屏时,录音后无法播放的问题。现分享解决办法。 社区录音应用的来源:https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-5.0.2-Release/code/SystemFeature/Media/Recorder …...

专业级软件卸载工具:免费使用,彻底卸载无残留!
在数字生活节奏日益加快的今天,我们的电脑就像每天都在"吃进"各种软件。但您是否注意到,那些看似消失的程序其实悄悄留下了大量冗余文件?就像厨房角落里积攒的调味瓶空罐,日积月累就会让系统变得"消化不良"。…...
前端开发实战:用React Hooks优化你的组件性能
问题背景 在前端开发中,React组件的性能优化是一个常见挑战。尤其是当组件逻辑复杂或数据频繁更新时,性能问题尤为突出。本文将介绍如何利用React Hooks(如useMemo和useCallback)来优化组件性能。 解决方案 useMemo:用…...

JVM对象创建内存分配
对象创建的主要流程: 检查加载类–》分配内存–》初始化–》设置对象头–》实例化,执行init方法。 在内存分配中,虚拟机将为新生对象内存分配 Minor GC : 新生代垃圾收集,特点是频繁,回收速度快; Full GC …...
华为云Git使用与GitCode操作指南
目录 1 概述 1.1 背景介绍 1.2 案例流程 1.3 资源总览 2 GitCode基础使用 2.1 GitCode注册 2.2 项目创建 3 云主机上Git常用基础命令使用 3.1 Git工具安装检查 3.2 git config 全局设置 3.3 git clone 创建仓库 3.4 git init 仓库初始化 3.5 git add/remove 文件添…...
标量/向量/矩阵/张量/范数详解及其在机器学习中的应用
标量(Scalar)、向量(Vector)、矩阵(Matrix)、张量(Tensor)与范数(Norm)详解及其在机器学习中的应用 1. 标量(Scalar) 定义࿱…...

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMarginsF)
文章目录 类简介方法总览关键说明示例代码 类简介 QMarginsF 用于定义四个浮点型边距(左、上、右、下),描述围绕矩形的边框尺寸。所有边距接近零时 isNull() 返回 True,支持运算符重载和数学运算。 方法总览 方法名/运算符参数返…...

STM32实现九轴IMU的卡尔曼滤波
在嵌入式系统中,精确的姿态估计对于无人机、机器人和虚拟现实等应用至关重要。九轴惯性测量单元(IMU)通过三轴加速度计、陀螺仪和磁力计提供全面的运动数据。然而,这些传感器数据常伴随噪声和漂移,单独使用无法满足高精…...

机器学习-简要与数据集加载
一.机器学习简要 1.1 概念 机器学习即计算机在数据中总结规律并预测未来结果,这一过程仿照人类的学习过程进行。 深度学习是机器学习中的重要算法的其中之一,是一种偏近现代的算法。 1.2 机器学习发展历史 从上世纪50年代的图灵测试提出、塞缪尔开发…...

算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度
递归 递归三部曲: 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法: 递归,对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…...

二叉树的遍历与构造
好想回家,我想回家跟馒头酱玩,想老爸老妈。如果上天再给我一次选择的机会,我会选择当一只小动物,或者当棵大树也好,或者我希望自己不要有那么多多余的情绪,不要太被别人影响,开心点,…...
Python+OpenCV实现手势识别与动作捕捉:技术解析与应用探索
引言:人机交互的新维度 在人工智能与计算机视觉技术飞速发展的今天,手势识别与动作捕捉技术正逐步从实验室走向大众生活。通过Python的OpenCV库及MediaPipe等工具,开发者能够以较低门槛实现精准的手部动作识别,为虚拟现实、智能家…...

MYSQL服务的使用流程
MYSQL是一个单进程多线程,支持多用户,基于客户机/服务器的关系数据库管理系统。与其他数据库管理系统相比,MYSQL具有体积小,易于安装,运行速度快,功能齐全,成本低廉以及开源等特点。MYSQL可运行…...
华为云API、SDK是什么意思?有什么区别和联系?
目录 一、API:像菜单 + 打电话点餐 📌 本质解释: 🔧 操作方式(偏底层): 🍱 类比举例: 二、SDK:像外卖App(美团/饿了么)自动点餐 📌 本质解释: 🔧 操作方式(偏上层): 🍱 类比举例: 三、联系:SDK 是对 API 的“封装与简化” 四、操作实例对…...

【java】使用iText实现pdf文件增加水印功能
maven依赖 <dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom</type></dependency> </dependencies>实现代码 前…...
Python爬虫实战:获取艺恩娱数最新电影舆情数据并分析,为影院排片做参考
一、引言 在电影行业蓬勃发展的当下,了解影片的各项指数对于票房宣发排片起着至关重要的作用。艺恩娱数网站作为电影行业重要的数据平台,提供了丰富且有价值的电影相关数据。然而,直接从该网站获取数据面临诸多挑战。Python 作为一种功能强大、应用广泛的编程语言,拥有众多…...
Linux指令入门:DevOps与SRE视角
文章目录 Linux指令入门:DevOps与SRE视角一、Linux基础命令概述二、文件系统操作命令1. 文件与目录基本操作2. 文件查看与编辑3. 文件压缩与归档 三、进程管理命令1. 进程查看与控制2. 服务管理(Systemd) 四、网络管理命令1. 网络连接与诊断2…...

socket套接字-TCP
上一篇:socket套接字-UDP(下)https://blog.csdn.net/Small_entreprene/article/details/147569071?fromshareblogdetail&sharetypeblogdetail&sharerId147569071&sharereferPC&sharesourceSmall_entreprene&sharefromfr…...
Ctrl + D是如何与内核文件结束符对应的?如何模拟文件结束符?数字中间为什么不能插入空格或逗号?丰富多彩的语句结束符或分隔符?语句结束符?
目录 Ctrl D是如何与内核文件结束符对应的? 如何模拟文件结束符? 哪些编程语言支持数值中插入分隔符更容易看清楚? 下划线分隔符 数字中间为什么不能插入空格或逗号? 丰富多彩的语句结束符或分隔符 误用分号 语句结束符 不同语言的结束符 更改语句结束符 Ctrl …...

MiM: Mask in Mask Self-SupervisedPre-Training for 3D Medical Image Analysis
Abstract Vision Transformer在3D医学图像分析的自监督学习(Self-Supervised Learning,SSL)中展现了卓越的性能。掩码自编码器(Masked Auto-Encoder,MAE)用于特征预训练,可以进一步释放ViT在各…...

【STM32 学习笔记】I2C通信协议
注:通信协议的设计背景 3:00~10:13 I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强, 不需要USART、CAN等通讯协议的外部收发设备,现在被广…...
【java】jdk8及以后的时间类总结
目录 1. LocalDate 2. LocalTime 4. ZonedDateTime 5. Duration 6. Period 7. DateTimeFormatter 1. LocalDate 说明:表示不带时区的日期(年、月、日),不可变且线程安全。 import java.time.LocalDate;public class Local…...
深入理解 Istio 的工作原理 v1.26.0
解读最新版本的 Istio 源码确实是一项庞大的工程,但我可以为你梳理出一个清晰的脉络,并指出关键模块和代码路径,帮助你深入理解 Istio 的工作原理。 我们主要关注 Istio 的核心组件 Istiod 和数据平面的 Envoy Proxy。 前提: Go…...