uni-app 使用uni.navigateBack后再次进入销毁的页面 页面栈中出现重复
uni-app 使用uni.navigateBack后再次进入销毁的页面 页面栈中出现重复
示例代码:
const pages = getCurrentPages()
const delta = pages.reverse().findIndex(item => item.route === 'pages/visit/record/index')
console.log(pages, 'pages-----------')
if (delta > 0) {
uni.navigateBack({
delta: delta
})
return
}
操作步骤:
- 创建三个页面A、B、C
- 使用navigateTo完成 A=>B=>C的页面跳转
- 使用navigateBack delta:2 从C =>A
- 重复2,3操作
预期结果:
- 页面创建成功
- 页面跳转路径 A=>B=>C
- 页面跳转路径C =>A
- 页面跳转路径 A=>B=>C=>A
实际结果:
- 页面创建成功
- 页面跳转路径 A=>B=>C
- 页面跳转路径C =>A
- 此时在页面栈中有两个B返回不到A
bug描述:
使用uni.navigateBack 后再次进入销毁的页面,此时在页面栈中有重复
- 创建三个页面A、B、C
- 使用navigateTo完成 A=>B=>C的页面跳转
- 获取A在页面栈的位置为2, 通过navigateBack返回到A
- 再次执行2,此时在页面栈中有两个B,获取到A的页面栈顺序为3,但是在navigateBack中使用delta:3又返回不到A
返回操作代码如下:
const pages = getCurrentPages()
const delta = pages.reverse().findIndex(item => item.route === 'pages/visit/record/index')
console.log(pages, 'pages-----------')
if (delta > 0) {
uni.navigateBack({
delta: delta
})
return
}
信息类型 | 信息内容 |
---|---|
产品分类 | uniapp/H5 |
PC开发环境 | Windows |
PC开发环境版本 | 10 |
HBuilderX版本 | 4.25 |
浏览器平台 | Chrome |
浏览器版本 | 版本 127.0.6533.101(正式版本) (64 位) |
项目创建方式 | CLI |
CLI版本 | ~4.5.19 |
更多关于uni-app 使用uni.navigateBack后再次进入销毁的页面 页面栈中出现重复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,我这根据你的描述模拟的项目没有发现这个问题,你可以把相关内容整合到一个项目中,提供给我们吗?
更多关于uni-app 使用uni.navigateBack后再次进入销毁的页面 页面栈中出现重复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
打印出的页面栈
[‘pages/b/index’, ‘pages/d/index’] 0
[‘pages/c/index’, ‘pages/b/index’, ‘pages/b/index’, ‘pages/d/index’] 1
[‘pages/d/index’, ‘pages/c/index’, ‘pages/c/index’, ‘pages/b/index’, ‘pages/b/index’, ‘pages/d/index’] 3
[‘pages/b/index’, ‘pages/b/index’, ‘pages/d/index’] 0
[‘pages/c/index’, ‘pages/b/index’, ‘pages/b/index’, ‘pages/b/index’, ‘pages/d/index’] 1
[‘pages/d/index’, ‘pages/c/index’, ‘pages/b/index’, ‘pages/b/index’, ‘pages/b/index’, ‘pages/d/index’] 2
你好,可以提供一下你的项目吗?方法是打包成zip在下方的附近中提交
回复 DCloud_UNI_yuhe: 提供了 刚才太大了 没上传上去
回复 Roue: 好的我测试一下
你好,我该怎么样操作才能复现你这样的效果呢?我这里走到D页面都是这样的
a=>b=>c=>d=>b=>c=>d…这样重复点 快速点击
回复 Roue: 看起来是你的延迟造成的吧,把延迟去除就没有这种情况了
回复 DCloud_UNI_yuhe: 业务场景是接口请求完成之后返回 我就加了个延时模拟
回复 Roue: 你尝试一下再接口请求外执行getCurrentPages之后再调用
回复 DCloud_UNI_yuhe: onload中执行 getCurrentPages把pages存起来 然后在需要的时候拿 还是不行 [‘pages/information/index/index’, ‘pages/information/record/record’, ‘pages/information/infromationDetail/index’, ‘pages/information/infromationDetail/index’, ‘pages/information/add/index’]