微信小程序踩坑记录 --- wx.navigateTo

微信小程序踩坑记录 — wx.navigateTo

先简单描述一下我的业务场景,我现在有两个页面,需要来回切换,如下图,点击搜索按钮进入搜索页面,搜索到内容后返回热门题目,做这个效果的时候我选择了wx.navigateTo这个接口,做完之后测试了几次之后都没问题,于是就安心的去睡大觉了!

在这里插入图片描述

在这里插入图片描述

接下来问题就来了,有一次自己多搜索了几次,发现突然不能跳转了,脑壳疼…,于是我刷新页面重新又搜索了几次,经过我的反复测试最终得出结论,发现页面只能跳转5次,5次过后就不能再通过wx.navigateTo进行页面跳转了,那这说明什么问题呢?说明微信小程序最多能进入5层页面栈,而每次通过wx.navigateTo进行页面跳转都会将该页面加入页面栈中。
在这里插入图片描述
好!问题发现了,接下来我们就来解决这个问题了。
比如,现在有两个页面分别为test1页面和test2页面,那么我们可以通过wx.navigateBack方法来避免这个问题,如果我们想要再这两个页面之间传递数据呢?这里使用了一种我不太常用的方法进行数据传输(当做是熟悉一下各种传值方式)。
在这里插入图片描述

//test1页面:
Page({
	data:{
		userName:""
	},
	getTest2Name(name){
		this.setData({
			userName:name
		})
	}
})
说明:
	我需要将test2页面的页面名字传递到test1页面,我们可以先在test1页面定义一个方法。
	getTest2Name方法即是用来获取test2页面的页面名字的。
//test2页面
Page({
	data:{},
	backtest1(){
		var name = "test2";
		//getCurrentPages获取上一个页面实例对象,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
	    var pageArr = getCurrentPages();
	    if (pageArr.length > 1) {
	      //获取上一个页面实例对象
	      var prePage = pageArr[pagelist.length - 2];
	      //这里通过获取到的test1页面实例来调用其方法,并将数据传递给test1页面
	      prePage.getBackData(name);
	      wx.navigateBack({
	      	//这里通过实例列表长度减去1返回上一个页面
	        delta: pageArr.length - 1
	      })
	    }
	}
})

大功告成!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值