微信小程序中【自定义顶部导航栏】页面栈超过【10层】之后无法打开其他页面
发布于 5 年前 作者 juan55 10731 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

该小程序没有底部tab栏,所有首页也用navigateTo跳的;顶部栏有效操作按钮有两个,一个是返回按钮,一个是回到首页按钮


  • 预期表现

点击返回保持正常返回逻辑,即a到b到c,c点击返回可以回到b;点击回到首页可以回到首页

  • 复现路径

一直增加页面栈到10个就会复现

  • 提供一个最简复现 Demo

(见代码片段链接)

- 个人想法

1.本地保存一套数组,模拟页面栈,返回等操作都用redirectTo跳转

2.尽量少的向页面栈中添加新页面,每次打开新页面,如果该页面不需要重新加载,去现有页面栈中找到已有页面,算步长,回退回去,但是会有返回逻辑混乱的bug

3.听听大佬们的意见和做法🤔🤔🤔

补充一个例子🤔现在情况是这样的,比如我在首页跳A再跳B再跳C,之后C页面点首页,因为用的是navigateTo,这样页面栈就又把首页加进去了,之后在首页的操作就又都会向页面栈中添加元素🤔

5 回复

如果你不想被页面栈问题所困扰 建议使用relLaunch   关闭所有页面,打开到应用内的某个页面

这不是bug把!,你这页面栈满了肯定跳不了其他页面了呀!

页面栈最多10层,可以在路由跳转前判断下当前页面栈的数量,如果超出一定的数量,则由

wx.navigateTo

改为

wx.redirectTo

const config = {
    maxPageStackTotal: 7
}
const isBeyondPageStackLimit = getCurrentPages().length >= config.maxPageStackTotal;
 
if(isBeyondPageStackLimit) {
    wx.redirectTo({
        url,
        success() {
 
        }
    })
}else{
    wx.redirectTo({
        url,
        success() {
             
        }
    })
}

navigateBack回退,还有个参数是可以设置回退多少层的,至于你说的页面混乱,如果頕页面需要返回不同的页面时,可以在进入页面时设置一个变量来区分返回哪个页面

这个就相当于,一个桶只能放10个饼,装满了除非拿出几个或者全部倒了,不然就装不下更多的饼了

回到顶部