Roue
Roue
  • 发布:2024-08-20 11:26
  • 更新:2024-08-21 11:15
  • 阅读:473

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

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX版本号: 4.25

浏览器平台: Chrome

浏览器版本: 版本 127.0.6533.101(正式版本) (64 位)

项目创建方式: CLI

CLI版本号: ~4.5.19

示例代码:
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  
} 
2024-08-20 11:26 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

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

Roue

Roue (作者)

打印出的页面栈

['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
  • DCloud_UNI_yuhe

    你好,可以提供一下你的项目吗?方法是打包成zip在下方的附近中提交

    2024-08-21 10:41

  • Roue (作者)

    回复 DCloud_UNI_yuhe: 提供了 刚才太大了 没上传上去

    2024-08-21 10:43

  • DCloud_UNI_yuhe

    回复 Roue: 好的我测试一下

    2024-08-21 10:44

DCloud_UNI_yuhe

DCloud_UNI_yuhe

你好,我该怎么样操作才能复现你这样的效果呢?我这里走到D页面都是这样的

  • Roue (作者)

    a=>b=>c=>d=>b=>c=>d....这样重复点 快速点击

    2024-08-21 14:01

  • DCloud_UNI_yuhe

    回复 Roue: 看起来是你的延迟造成的吧,把延迟去除就没有这种情况了

    2024-08-21 14:21

  • Roue (作者)

    回复 DCloud_UNI_yuhe: 业务场景是接口请求完成之后返回 我就加了个延时模拟

    2024-08-21 15:15

  • DCloud_UNI_yuhe

    回复 Roue: 你尝试一下再接口请求外执行getCurrentPages之后再调用

    2024-08-21 15:24

  • Roue (作者)

    回复 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']

    2024-08-21 15:39

要回复问题请先登录注册