uniapp 不同路由之间的区别

news2025/5/13 2:40:42

在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

三、特殊场景下的选择建议

  1. 需要返回上一页:使用 navigateTo,配合 navigateBack 返回。
  2. 禁止返回操作:使用 redirectToreLaunch,例如登录成功后。
  3. tabBar 页面切换:必须使用 switchTab,其他方法无效。
  4. 重置应用状态:使用 reLaunch,例如退出登录或切换账号。
  5. 多级返回:使用 navigateBack 并设置 delta 参数。

四、注意事项

  1. 页面栈限制
    • navigateTo 的页面栈最多十层,超过后无法继续跳转。
    • 可以通过 getCurrentPages() 获取当前页面栈信息。
  2. 生命周期差异
    • switchTab 切换到的 tabBar 页面不会触发 onLoad,而是触发 onShow
    • 缓存页面(使用 <keep-alive>)会触发 onShowonReady,但不会触发 onLoad
  3. 参数传递
    • 跳转时可以通过 URL 参数传递简单数据,如 url: '/pages/detail?id=123'
    • 复杂数据可以通过全局变量、Vuex 或本地存储传递。

五、代码示例

// 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 应用时更加得心应手,根据不同的场景选择最合适的跳转方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2373609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统入门第十二章 --Shell编程之正则表达式

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

[架构之美]Spring Boot多环境5种方案实现Dev/Test/Prod环境隔离

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

C++STL——stack,queue

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

解决社区录音应用横屏状态下,录音后无法播放的bug

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

专业级软件卸载工具:免费使用,彻底卸载无残留!

在数字生活节奏日益加快的今天&#xff0c;我们的电脑就像每天都在"吃进"各种软件。但您是否注意到&#xff0c;那些看似消失的程序其实悄悄留下了大量冗余文件&#xff1f;就像厨房角落里积攒的调味瓶空罐&#xff0c;日积月累就会让系统变得"消化不良"。…

JVM对象创建内存分配

对象创建的主要流程&#xff1a; 检查加载类–》分配内存–》初始化–》设置对象头–》实例化&#xff0c;执行init方法。 在内存分配中&#xff0c;虚拟机将为新生对象内存分配 Minor GC : 新生代垃圾收集&#xff0c;特点是频繁&#xff0c;回收速度快&#xff1b; Full GC …

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMarginsF)

文章目录 类简介方法总览关键说明示例代码 类简介 QMarginsF 用于定义四个浮点型边距&#xff08;左、上、右、下&#xff09;&#xff0c;描述围绕矩形的边框尺寸。所有边距接近零时 isNull() 返回 True&#xff0c;支持运算符重载和数学运算。 方法总览 方法名/运算符参数返…

STM32实现九轴IMU的卡尔曼滤波

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

机器学习-简要与数据集加载

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

算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度

递归 递归三部曲&#xff1a; 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法&#xff1a; 递归&#xff0c;对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…

二叉树的遍历与构造

好想回家&#xff0c;我想回家跟馒头酱玩&#xff0c;想老爸老妈。如果上天再给我一次选择的机会&#xff0c;我会选择当一只小动物&#xff0c;或者当棵大树也好&#xff0c;或者我希望自己不要有那么多多余的情绪&#xff0c;不要太被别人影响&#xff0c;开心点&#xff0c;…

MYSQL服务的使用流程

MYSQL是一个单进程多线程&#xff0c;支持多用户&#xff0c;基于客户机/服务器的关系数据库管理系统。与其他数据库管理系统相比&#xff0c;MYSQL具有体积小&#xff0c;易于安装&#xff0c;运行速度快&#xff0c;功能齐全&#xff0c;成本低廉以及开源等特点。MYSQL可运行…

【java】使用iText实现pdf文件增加水印功能

maven依赖 <dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom</type></dependency> </dependencies>实现代码 前…

socket套接字-TCP

上一篇&#xff1a;socket套接字-UDP&#xff08;下&#xff09;https://blog.csdn.net/Small_entreprene/article/details/147569071?fromshareblogdetail&sharetypeblogdetail&sharerId147569071&sharereferPC&sharesourceSmall_entreprene&sharefromfr…

MiM: Mask in Mask Self-SupervisedPre-Training for 3D Medical Image Analysis

Abstract Vision Transformer在3D医学图像分析的自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;中展现了卓越的性能。掩码自编码器&#xff08;Masked Auto-Encoder&#xff0c;MAE&#xff09;用于特征预训练&#xff0c;可以进一步释放ViT在各…

【STM32 学习笔记】I2C通信协议

注&#xff1a;通信协议的设计背景 3:00~10:13 I2C 通讯协议(Inter&#xff0d;Integrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff0c; 不需要USART、CAN等通讯协议的外部收发设备&#xff0c;现在被广…

深入理解卷积神经网络的输入层:数据的起点与预处理核心

内容摘要 本文围绕卷积神经网络输入层展开&#xff0c;详细介绍其在网络中的重要作用&#xff0c;包括接收不同领域数据的形式及传递数据的过程。深入解读数据预处理的关键操作&#xff0c;如去均值、归一化和PCA/白化。助力读者透彻理解输入层&#xff0c;为构建高效卷积神经…

redis bitmap数据类型调研

一、bitmap是什么&#xff1f; redis原文&#xff1a; Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type . This means that bitmaps can be used with string commands, and most importantly with SET and GET. 翻…

LabVIEW 2019 与 NI VISA 20.0 安装及报错处理

在使用 Windows 11 操作系统的电脑上&#xff0c;同时安装了 LabVIEW 2019 32 位和 64 位版本的软件。此前安装的 NI VISA 2024 Q1 版&#xff0c;该版本与 LabVIEW 2019 32 位和 64 位不兼容&#xff0c;之后重新安装了 NI VISA 20.0。从说明书来看&#xff0c;NI VISA 20.0 …