小程序跳转

news2024/11/26 0:32:13

小程序的路由跳转

在这里插入图片描述

一、路由跳转的方式

1.1 wx.navigateTo

wx.navigateTo 保留当前页面,跳转到应用内的某个页面。会将页面缓放在页面栈中,最多十个

wx.navigateTo({
  url: 'test'
})

1.2 wx.redirectTo

wx.redirectTo 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面,不会将当前页缓存在内存中,重定向到其它页面,当前页面移出页面栈,重定向的页面入栈

wx.redirectTo({
  url: 'test'
})

1.3 wx.switchTab

wx.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,会删除内存中缓存的页面,页面栈全移除,只留下tabbar页面

wx.switchTab({
  url: '/index'
})

注意:

switchTab无法携带参数跳转

1.4 wx.navigateBack

wx.navigateBack 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。(参数:delta

wx.navigateBack({
  delta: 2
})

1.5 wx.reLanch

wx.reLanch 关闭所有页面,打开到应用内的某个页面,重新加载,全部出栈,只留跳转后的页面。

wx.reLaunch({
  url: 'test'
})

二、路由带参跳转

  1. 在接收页面的url后面加上“?自定义名称=字符串”就可以通过url传值

    拼接一个参数: url ? xxx=xxx
    拼接多个参数: url ? xxx=xxx & xxx=xxx & xxx=xxx

  2. onLoad 参数接收

    onLoad(options) {
    		console.log(options.xxx)
    }
    

例:

A页面(pages/a/a) 跳转到 B页面(pages/b/b)

2.1 基本数据 传递 / 接收

传递

// A 页面
let id = 1
wx.navigateTo({ // 传递一个参数
	url: "/pages/b/b?id=" + id
})

let name = "张一山", age = 24;
wx.navigateTo({ // 传递多个参数
	url: "/pages/b/b?id=" + id + "&name=" + name + "&age=" + age
})

接收

// B 页面
onLoad(options) { // 接收一个参数
	console.log(options.id)
}

onLoad(options) { // 接收多个参数
	console.log(options.id)
  console.log(options.name)
  console.log(options.age)
}

2.2 引用数据 传递 / 接收

传递,需要JSON.stringify()转换

// A 页面
let info = {
  id:1,
  name:"张一山",
  age:24
}

wx.navigateTo({
	url: "/pages/b/b?info=" + JSON.stringify(info)
})

接收,需要JSON.parse()转换

// B 页面
onLoad(options) {
	console.log(JSON.parse(options.info))
}

2.3 数据过长 传递 / 接收

参数传参长度超过限制被截取时,需要使用encode

传递,需要encodeURIComponent()转换

// A 页面

// arr是跳转传照片的数组,先转字符串,再encode
let param = encodeURIComponent(arr.toString())
wx.navigateTo({
	url: "/pages/b/b?param=" + param
})

接收,需要decodeURIComponent()转换

// B 页面
onLoad(options) {
	let param = decodeURIComponent(options.param)
  console.log(param)
}

三、路由栈的获取

3.1 介绍

通过 getCurrentPages() 函数可以获取到的是一个路由栈,包含跳转的所有路由。

let pages = getCurrentPages()
console.log(pages,'pages');

在这里插入图片描述

上图是

0: “pages/index/index” 跳到 1: “pages/rightsDetail/rightsDetail” 跳到 2: “pages/placeOrder/placeOrder”

// 上图 其中一个路由信息Bo
Bo{
	onClose: ƒ ()
	onHide: ƒ ()
	onLoad: ƒ ()
	onShow: ƒ ()
	onUnload: ƒ ()
	...
	options: {itemInfo: "{"saleOrderNo":"RS2305080000000",...}"}
	route: "pages/rightsDetail/rightsDetail"
	__callPageLifeTime__: ƒ (e,...t)
	__displayReporter: ie {showOptions: {}, hideOptions: {}, route: 	"pages/rightsDetail/rightsDetail", pageType: 2, query: {},}
	__eventChannel: {listener: {}, emit: ƒ, on: ƒ, once: ƒ, off: ƒ,}
	__exitState__: undefined
	__route__: "pages/rightsDetail/rightsDetail"
	...
}

路由信息中比较重要的是 routeoptions

3.2 封装方法

3.2.1 获取当前页url
const getCurrentPageUrl = () => {
  const pages = getCurrentPages()    // 获取加载的页面
  const currentPage = pages[pages.length - 1]    // 获取当前页面的对象
  // 当前页面url
  return currentPage.route
}
3.2.2 获取当前页带参数的url
const getCurrentPageUrlWithArgs = () => {
  const pages = getCurrentPages(); // 获取加载的页面
  const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
  const { route, options } = currentPage; // 解构获取页面对象的属性

  // 拼接url的参数
  const urlWithArgs = `${route}?${Object.entries(options).map(([key, value]) => `${key}=${value}`).join('&')}`;

  return urlWithArgs;
};

3.2.3 获取上一个页面url
const getPrevPageUrl = () => {
  const pages = getPrevPages()    // 获取加载的页面
  const prevPage = pages[pages.length - 2]    // 获取当前页面的对象
  // 当前页面url
  return prevPage.route
}
3.2.3 获取上一个页面url
const getPrevPageUrl = () => {
  const pages = getPrevPages()    // 获取加载的页面
  const prevPage = pages[pages.length - 2]    // 获取当前页面的对象
  // 当前页面url
  return prevPage.route
}

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

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

相关文章

电商项目,订单如何测试?软件测试实战场景,所有测试点汇总...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 订单测试作为常见…

scanpy单细胞分析流程

梳理一下scanpy单细胞分析流程(处理的是scRNA-seq)。 先上一张流程图: scanpy单细胞分析流程 import scanpy as scRead data 常用的文件格式有两种,分别是h5ad和10X mtx # read h5ad adata sc.read()# read 10X mtx adata …

从小白到大神之路之学习运维第44天---第三阶段----拓展知识-----文件管理命令(find+sed+awk)、pycharm工具

第三阶段基础 时 间:2023年6月20日 参加人:全班人员 内 容: 目录 一、文件管理命令 find 1. 根据文件名查找文件 2. 根据文件类型查找文件 3. 根据文件大小查找文件 4. 根据时间戳查找文件 5. 组合多个条件查找文件 Sed 1. 替…

【Vue】学习笔记-创建Vue3.0工程

创建Vue3.0工程 使用vue-cli创建查看vue/cli版本,确保vue/cli版本在4.5.0以上安装或者升级你的vue/cli创建启动 使用vite创建创建工程进入工程目录安装依赖运行 使用vue-cli创建 官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-…

【性能测试】压力测试指标全解之TPS、响应时间

hello,大家好!我是磨磨唧唧小蘑菇~ 接上期阐述了《TP50/90/99/999》的含义及计算方式,本期将阐述压力测试的其他指标,如TPS、响应时间等。 目录 一、TPS 二、响应时间 三、TPS与响应时间RT的关系 一、TPS 1、TPS的含义 …

vscode折叠代码展开快捷键

1.折叠所有代码 (按住ctrl 分别点击k和0) ctrlk,ctrl0 2.展开所有代码 (按住ctrl 分别点击k和j) ctrlk,ctrlj 3. 折叠鼠标竖线所在位置的节点以及当前节点下的子节点(递归折叠) ctrlk,ctrl[ 4. 展开鼠标竖线所在位置的节点以及当前节点下的子节点&#x…

【Springboot】关于Spring和SpringBoot的那些事儿

参考javaguide的学习笔记~ 1 怎么那么多名字呀~ 一开始看到这个图太劝退了,但实际上一开始只需要理解它是一个框架,包含很多个模块,能够简化开发。 使得接收HTTP请求,查数据库,写业务逻辑三部分能够分开。 并且能很…

【2023最全最叼教程】Selenium 自动化测试环境搭建

【导语】Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。本文详细介绍了搭建自动化测试环境所需的工具,让你学习自动化测试不…

人脸检测——基于机器学习3】AdaBoost算法

简介 主要工作AdaBoost算法的人脸检测算法包含的主要工作:(1)通过积分图快速求得Haar特征;(2)利用AdaBoost算法从大量的特征中选择出判别能力较强的少数特征用于人脸检测分类;(3)提出一个级联结构模型,将若干个弱分类器集成一个强分类器,其能够快速排除非人脸区域,…

系统架构设计师-系统工程与信息系统基础(2)

一、电子政务类型 电子政务主要有3类角色:政府(Government)、企(事)业单位(Business)及公民(Citizen)。如果有第4类就是公务员(Employee)。 二、企…

CMIP6降尺度方法

气候变化关系到农业、生态系统、社会经济和人类生存与发展,是当今世界关注的重点问题之一。IPCC(Intergovernmental Panel on Climate Change)第6次评估报告指出,自 20 世纪 50 年代以来,从全球平均气温和海温升高、大…

Unity核心10——导航寻路系统

Unity 中的导航寻路系统是能够让我们在游戏世界当中,让角色能够从一个起点准确的到达另一个终点,并且能够自动避开两个点之间的障碍物选择最近最合理的路径进行前往 ​ Unity 中的导航寻路系统的本质,就是在 A 星寻路算法的基础上进行了拓展和…

国家加强互联网广告监管

我是卢松松,点点上面的头像,欢迎关注我哦! 5月1日《互联网广告管理办法》正式实施。 6月19日,市场监督总局要求加强广告监管。 主要针对直播带货广告、弹窗广告、“软文”广告等新型广告形式,加大互联网广告乱象清理…

HDLBits自学笔记3:Verilog language.Modules Hierarchy

Modules 在顶层模块中实例化模块mod_a,其端口描述: module mod_a ( input in1, input in2, output out ); module top_module ( input a, input b, output out );// 按信号名称连线mod_a u1(.in1(a),.in2(b),.out(out));// 按信号位置连线// mod_a u…

基于数据驱动 U-Net 模型的大气污染物扩散快速预测,提升计算速度近6000倍

项目背景 当前,常见的大气污染预测模型大多是基于物理机理构建的,比如空气质量预测模型 Calpuff、AERMOD、CMAQ 等。然而,这些模型运算较为复杂,对于输入数据的要求非常高,运算耗时也比较长,适合用于常规固…

【玩转Docker小鲸鱼叭】Docker镜像常用命令汇总

镜像是Docker中最为核心也是最具创造性的概念!在理解Docker的核心概念文章中,我们理解了镜像的含义,下面让我们一起操作一些镜像,包括拉取、推送镜像等操作。 1、镜像支持哪些命令 通过 docker image help 查看 Docker 支持的镜像…

联想U盘重装系统Win10步骤和详细教程

最近很多用户都在问怎么利用U盘来给联想电脑重装Win10系统,用户需要准备一个8G以上的U盘,确保联想电脑能够正常联网,然后按照小编给大家分享的联想U盘重装系统Win10步骤和详细教程操作,即可快速轻松完成联想电脑Win10系统的重装。…

C++——cin输入

cin对象在抽取过程中会进行类型转换&#xff0c;这应该是根据字节数来的&#xff0c;对于每一种类型&#xff0c;都会有相应的指令合集&#xff0c;也就是cpu会按字节进行转换&#xff0c;区别在于大端模式或者是小端模式&#xff0c;cin对象从在了<<相应的函数被称为格式…

陪诊APP开发服务兼职软件

陪诊APP是一种提供陪伴照顾服务的应用程序&#xff0c;主要面向需要医院陪护的病人及家属。以下是可能有助于陪诊APP开发服务兼职软件的功能&#xff1a; 注册和登录&#xff1a;允许用户使用手机号码等方式注册并登录账户。 病房预约&#xff1a;允许家属为病人预约病…

数据烦恼?亮数据平台为你提供一站式解决方案

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 在当今数字时代&#xff0c;大型和实时的数据集具有更全面的信息、更准确的预测、和更好的竞争优势。作为一位刚被数据折磨过的人&#xff0c;我必须要把自己的经验跟大家分享一下&#xff0c;让大家和公司在收集数据方面…