如何在uni-app中获取页面栈中的实例达到获取数据的目的?

在这里插入图片描述

这里使用的是uni-app的api getCurrentPages()获取到页面栈的实例:官网上有写到:

在这里插入图片描述
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

注意: getCurrentPages()仅用于展示页面栈的情况,请勿修改页面栈,以免造成页面状态错误。

使用场景:可以解决需要跨多个页面传递后台需要的参数,比如页面发生三级或者以上的跳转,然而需要的参数在第一个页面 要传递到第三个页面或者三个以上页面的时候,除了vueX 本地存储,这也是个比较简便的方法,在哪个页面需要数据 就在哪个页面发请求之前使用。

pay(){
				var self = this;
				if (this.isReClick) {
					this.isReClick = false;
					setTimeout(() => {
						this.isReClick = true;
					}, 5000);
					let pages = getCurrentPages()
					let page = pages[pages.length-2]
					let obj = page.data.warebeanInfo
					console.log(page,obj)
					this.$http.ordercommit({
							orderno: self.orderno,
							paymethod: self.paymethod,
							buy_inverse_points:obj.buy_inverse_points,//用户下单返的积分
							pid_points:obj.pid_points,//用户下单返的积分
							pid_points2:obj.pid_points2 //用户下单返的积分
						},
						res => {
							// console.log("支付",res.data.data)
							if (self.paymethod == 8) {
								var orderid = res.data.data.orderid;
								uni.requestPayment({
								//……以下省略……

这里是

				let pages = getCurrentPages()
				let page = pages[pages.length-2]
				let obj = page.data.warebeanInfo

使用三个字面量接收页面栈里面的数据,然后要传参数的地方直接传就ok了。类似于从本地存储拿到的数据,只是省略了存的步骤。
buy_inverse_points:obj.buy_inverse_points,//用户下单返的积分
pid_points:obj.pid_points,//用户下单返的积分
pid_points2:obj.pid_points2 //用户下单返的积分

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐