微信小程序页面跳转,如果使用wx.navigateTo或者navigator标签进行跳转,最多只能跳转10次
(超过10次,在怎么点也不会跳转),这很不利于用户的体验。记自己遇到的这一次坑。也不能说是坑吧,只是自己没有处理好跳转的安排。
开始正文
- 在项目开发中,面对界面的跳转,都是使用的navigateTo的方式进行的跳转, 最后再测试的时候发现问题,就是当你点的次数多了的时候,你会如发现所有的跳转点击事件都不可以使用了,此时看控制台发现报错了,报错内容:errMsg: “navigateTo:fail webview count limit exceed“。
- 出现这个问题是因为微信小程序,对于navigateTo的跳转有限制,做多只能跳转10次,为了增加用户体验,在这里就需要了解一个叫页面栈的东西,当你跳转的时候,页面的信息会进入页面栈当页面栈无法容纳页面的时候就会抛出上面的报错。
let pages = getCurrentPages();
//通过该方式可以拿到页面栈,对页面栈里面的内容进行分析,然查找问题
解决方法(仅供参考)
- 我的跳转逻辑大致如下
A --> B --> C --> D - 当上一级向下一级跳转的时候使用navigateTo,这样的页面会进入到页面栈。
- 对于返回使用的navigateBack方式,这样的会就可以叫页面出栈,就不会出现超出限制的情况了
代码如下:
goBill: function (e) {
var pages = getCurrentPages(); //当前页面
var beforePage = pages[pages.length - 2]; //前一页
beforePage.onLoad(); // 执行前一个页面的onLoad方法
wx.navigateBack({
delta: 1
});
},
//上述代码是通过点击页面内的按钮实现的返回跳转, 对于平时的返回,是通过小程序页面左上角的返回按钮
//或者移动端的物理返回实现,物理返回只需要操作onUnload就好
结尾
- 我的这种情况只是适合我的当下需求,仅供参考,对于具体问题,还是得详细阅读开发者文档,然后寻找适合自己的处理方式。