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  
} 

操作步骤:

  1. 创建三个页面A、B、C
  2. 使用navigateTo完成 A=>B=>C的页面跳转
  3. 使用navigateBack delta:2 从C =>A
  4. 重复2,3操作

预期结果:

  1. 页面创建成功
  2. 页面跳转路径 A=>B=>C
  3. 页面跳转路径C =>A
  4. 页面跳转路径 A=>B=>C=>A

实际结果:

  1. 页面创建成功
  2. 页面跳转路径 A=>B=>C
  3. 页面跳转路径C =>A
  4. 此时在页面栈中有两个B返回不到A

bug描述:

使用uni.navigateBack 后再次进入销毁的页面,此时在页面栈中有重复

  1. 创建三个页面A、B、C
  2. 使用navigateTo完成 A=>B=>C的页面跳转
  3. 获取A在页面栈的位置为2, 通过navigateBack返回到A
  4. 再次执行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

11 回复

你好,我这根据你的描述模拟的项目没有发现这个问题,你可以把相关内容整合到一个项目中,提供给我们吗?

更多关于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’]

回到顶部