微信小程序中【自定义顶部导航栏】页面栈超过【10层】之后无法打开其他页面
- 当前 Bug 的表现(可附上截图)
该小程序没有底部tab栏,所有首页也用navigateTo跳的;顶部栏有效操作按钮有两个,一个是返回按钮,一个是回到首页按钮
- 预期表现
点击返回保持正常返回逻辑,即a到b到c,c点击返回可以回到b;点击回到首页可以回到首页
- 复现路径
一直增加页面栈到10个就会复现
- 提供一个最简复现 Demo
(见代码片段链接)
- 个人想法
1.本地保存一套数组,模拟页面栈,返回等操作都用redirectTo跳转
2.尽量少的向页面栈中添加新页面,每次打开新页面,如果该页面不需要重新加载,去现有页面栈中找到已有页面,算步长,回退回去,但是会有返回逻辑混乱的bug
3.听听大佬们的意见和做法🤔🤔🤔
补充一个例子🤔现在情况是这样的,比如我在首页跳A再跳B再跳C,之后C页面点首页,因为用的是navigateTo,这样页面栈就又把首页加进去了,之后在首页的操作就又都会向页面栈中添加元素🤔
5 回复
页面栈最多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() { } }) } |