问题:
小程序页面跳转场景中,如果多次反复跳转业务场景下,会出现页面点击卡住无效的问题。
原因:
页面栈里已经达到了10层
解决方案:
使用到getCurrentPages()
函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
然后判断要跳转的页面是否存在于页面栈中,如果存在,则使用uni.navigateBack({ delta: 2 });
进行跳转即可(这里的2只是示例数字,具体根据自己判断情况计算而得)。
项目中使用实例:
backPointsMall() {
let pages = getCurrentPages()
let len = pages.length
let dlt = ""
for (let i = 0; i < len; i++) {
if (pages[i].route == 'subcontractPage/pointsMall/pointsMall') {
dlt = i + 1; //目标页在栈中的位置
break;
}
}
if (!dlt) { //这个判断里面的跳转代码可根据自己项目实际需求场景进行修改
if (len < 10) {
uni.navigateTo({
url: '../pointsMall/pointsMall'
});
} else {
uni.redirectTo({
url: '../pointsMall/pointsMall'
})
}
} else { //主要是else里面的跳转代码用来解决页面栈10层限制问题导致卡住的问题
uni.navigateBack({
delta: len - dlt
});
}
}
好了,就到这里了,如果还有疑问请在下面提问作者或者私信作者都行,看到了就会回复哦~
如果看了这篇文章之后,对你有所启发或帮助,那就请用你那好看的手给作者点一个漂亮的赞吧~