首页 > 其他分享 >UniApp 中页面跳转的方法及传值

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

时间:2024-08-31 18:51:56浏览次数:7  
标签:navigateTo UniApp tabBar 跳转 uni Vuex 传值 页面

一、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 的参数值为 123
   uni.navigateTo({
     url: '/pages/pageB/pageB?id=123'
   });
在目标页面的 onLoad 生命周期函数中接收参数:
 export default {
     onl oad(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'])
     },
     onl oad() {
       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 {
     onl oad() {
       const data = uni.getStorageSync('sharedData');
       console.log(data);
     }
   };

标签:navigateTo,UniApp,tabBar,跳转,uni,Vuex,传值,页面
From: https://blog.csdn.net/weixin_41562028/article/details/141724043

相关文章

  • 计算机毕业设计选题推荐-使用Uniapp和微信小程序开发“川味游”,让你轻松打造地道的川
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • 基于springboot+vue+uniapp的使命召唤游戏助手小程序
    开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示后台登录界面管理员主界面玩家管理游戏分类管理道具种类管理游戏道具管理战绩信息管理......
  • 基于ssm+vue+uniapp的学生毕业管理小程序
    开发语言:Java框架:ssm+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示管理员登录管理员功能界面学生管理开题答辩管理学生过程文档管理系统管理小程序登录小程序首......
  • vue3+ts封装一个uniapp的自动滚动列表,实现看板效果
    电视机上要以列表展示数据,并且数据会实时更新,电视机不能点击,所以考虑自动播放的一个效果。展示方案有两种:1、列表上下自动滚动实现轮播效果。(此时具体滚动的高度由用户自己决定,每次滚动几条数据)2、列表以“页”的形式做成轮播图的翻页效果。由于项目的电视机是有任务提示作......
  • uniapp自定义头部导航栏布局(优化版)
    H5与微信小程序效果图普通版//utils/system.js //获取系统信息 constsystemInfo=uni.getSystemInfoSync(); //获取状态栏的高度,H5状态栏的高度默认是0 exportconstgetStatusBarHeight=()=>systemInfo.statusBarHeight||0; //获取标题栏高度 exportconstgetT......
  • 后台传值与dialog的使用
    1.后台在给前端传值时需要id来作为唯一索引查找,前后端对应才能查找到对应的数据我今天后端写好了代码但是前端没有把id引入导致更新信息不好使获取数据时一定要把id取到2.dialog方法这是一个简单的弹出框,里面是编辑内容的form卡片将dialog的属性为true就能在页面显示,反之无......
  • C# 传值参数
    传值参数1.值类型值参数创建变量的副本:当传递值参数时,实际上是创建了原始变量的一个副本,然后将副本传递给方法。对值参数的操作永远不影响变量的值:由于是复制了一份新的副本,所以对副本进行操作不会影响原始变量的值。usingSystem;usingSystem.Collections.Generic;usin......
  • uniapp 微信小程序 支付
    <template> <viewclass="wrap">  <viewclass="payComplete">   <imageclass="img"src="@/static/image/index/6.png"/>   <textclass="adress">支付完成后填写</text> ......
  • uniapp js 划消小游戏 1.0 去控制台看打印(仅作参考)
    <template> <viewclass="wrap">  划消:{{sdNum}}*{{sdNum}}  <viewclass="btn"style="padding:32rpx;background:pink"@click="clickBtn">点击划消按钮</view>  <viewclass="btn&q......
  • uniapp js 数独小游戏 写死的简单数独 数独 3.0
    <template> <viewclass="wrap">  数独:{{sdNum}}*{{sdNum}}  <viewclass="btn"style="padding:32rpx;background:pink"@click="startFun">点击开始计时</view>  <viewclass="btn&q......