当前位置: 首页 > news >正文

UniApp 中页面跳转的方法及传值

一、UniApp 中页面跳转的方法及特点

(一)常见的页面跳转方法

  1. uni.navigateTo
    • 用途:用于跳转到应用内的某个页面,非 tabBar 页面,它会保留当前页面,打开新的页面并推入页面栈中。
    • 特点:可以通过页面栈管理返回原页面,在新页面返回时可以返回到原页面继续操作流程。
  2. uni.redirectTo
    • 用途:关闭当前页面,重定向到应用内的某个页面(非 tabBar 页面)。
    • 特点:与 uni.navigateTo 的区别在于它不能返回原页面,而是直接替换当前页面进行跳转。
  3. uni.reLaunchLaunch
    • 用途:关闭所有页面,打开到应用内的某个页面。
    • 特点:可以跳转到任意页面并清空所有历史页面栈,常用于应用的重启或者跳转到首页等场景。
  4. uni.navigateBack
    • 用途:用于关闭当前页面,返回上一页面或多级页面(通过设置 delta 参数来控制返回的页面层级数量)。通常用于在页面栈中进行返回操作,比如从一个详情页面返回到列表页面。
    • 特点:只能返回到已经存在于页面栈中的页面,并且无法直接跳转到 tabBar 页面(底部导航栏定义的页面)。
  5. uni.switchTab
    • 用途:专门用于跳转到 tabBar 页面(即应用底部导航栏所定义的那些页面),并且会关闭所有非 tabBar 页面。它是用于在 tabBar 页面之间进行切换的方法。
    • 特点:只能跳转到 tabBar 页面,并且会清除非 tabBar 页面的历史记录,直接切换到指定的 tabBar 页面并重新加载该页面。

(二)页面跳转传值的方法

1、使用路由参数传递简单数据:

对于 uni.navigateTouni.redirectTouni.reLaunch 等跳转方法,可以在跳转的目标页面路径后面直接拼接参数。

例如:

 // 假设要跳转到名为 pageB 的页面并传递一个名为 id 的参数值为 123uni.navigateTo({url: '/pages/pageB/pageB?id=123'});
在目标页面的 onLoad 生命周期函数中接收参数:
 export default {onLoad(options) {if (options.id) {const idValue = options.id;console.log(idValue);}}};

2、使用全局变量或状态管理工具传递复杂数据:

  • 如果需要传递复杂的对象或大量数据,可以借助全局变量或者状态管理工具(如 Vuex)。
  • 例如使用 Vuex:
  • 在源页面的某个方法中通过 commit 一个 mutation 来将数据存储到 Vuex store 中:
   import { mapMutations } from 'vuex';export default {methods: {...mapMutations(['setData']),goToTargetPage() {const complexData = { key: 'value', array: [1, 2, 3] };this.setData(complexData);uni.navigateTo({url: '/pages/targetPage/targetPage'});}}};
  • 在 Vuex store 中定义 mutation 和 state 来处理数据存储:
   import Vue from 'vue';import Vuex from 'vuex';Vue.use(Vuex);const store = new Vuex.Store({state: {dataToShare: null},mutations: {setData(state, data) {state.dataToShare = data;}}});export default store;
  • 在目标页面中从 Vuex store 中获取数据:
   import { mapState } from 'vuex';export default {computed: {...mapState(['dataToShare'])},onLoad() {console.log(this.dataToShare);}};

3、使用本地存储传递数据

  • 可以在源页面将数据存储到本地存储(uni.setStorage 或 uni.setStorageSync)中,然后在目标页面读取(uni.getStorage 或 uni.getStorageSync)。
  • 例如在源页面存储数据
   const dataToPass = { name: 'example', age: 20 };uni.setStorageSync('sharedData', dataToPass);uni.navigateTo({url: '/pages/targetPage/targetPage'});
  • 在目标页面获取数据:
   export default {onLoad() {const data = uni.getStorageSync('sharedData');console.log(data);}};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 金融风控领域的15大顶级学术期刊
  • 2024年Java最新面试题总结(三年经验)
  • OSPF理论
  • js数据类型转换-----统一转成字符串String()
  • 22:差分线规则
  • 记录elasticsearch-analysis-dynamic-synonym从8.7.0升级到8.15.0所遇到的问题
  • HTTP和HTTPS
  • 游卡,三七互娱,得物,顺丰,快手,oppo,莉莉丝,康冠科技,途游游戏,埃科光电25秋招内推
  • 【电力系统】使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性
  • 如何五分钟使用 Cocos Creator 快速部署 TON 游戏(第一部分)
  • windows系统huggingface连接不上的解决方案
  • 4、Spring手写系列-为Bean对象注入属性和依赖Bean的功能实现
  • ThreadLocal在多线程环境中的应用与原理解析
  • C / C++ const 全面总结
  • Python Chardet介绍
  • CSS盒模型深入
  • ES6系列(二)变量的解构赋值
  • JAVA之继承和多态
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • NSTimer学习笔记
  • Odoo domain写法及运用
  • PAT A1120
  • React Transition Group -- Transition 组件
  • Redis 中的布隆过滤器
  • 从输入URL到页面加载发生了什么
  • 关于for循环的简单归纳
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 聊聊redis的数据结构的应用
  • 扑朔迷离的属性和特性【彻底弄清】
  • 数据结构java版之冒泡排序及优化
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我的zsh配置, 2019最新方案
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • - 转 Ext2.0 form使用实例
  • HanLP分词命名实体提取详解
  • 阿里云ACE认证之理解CDN技术
  • 正则表达式-基础知识Review
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十八)三元表达式和列表解析
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (推荐)叮当——中文语音对话机器人
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (源码分析)springsecurity认证授权
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core控制台应用程序初识
  • .NET Core中如何集成RabbitMQ
  • .net MVC中使用angularJs刷新页面数据列表
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET6 命令行启动及发布单个Exe文件