1***@qq.com
1***@qq.com
  • 发布:2023-04-21 15:54
  • 更新:2024-07-04 20:04
  • 阅读:1761

uni-app getcurrentpages()的坑

分类:uni-app

在微信小程序开发的时候用到getCurrentPages(),获取打开页面栈实例,返回的是一个是一个先进后出的栈结构,
let pages = getCurrentPages()
let currentPage = pages[pages.length -1] //可以获得当前页面,如果要获取指定页面的栈实例

let count = 0;
pages.forEach(e=>{ //如果打开多个页面,用遍历方式可获得指定页面并用
if(e.route == 'pages/xxx/xxx'){
可获得指定的页面栈实例
wx.navigateBack({delta: count})
}
})

但是在uni-app中在开发APP的时候,getCurrentPages()返回的是一个先进先出的队列结构,
let pages = getCurrentPages().reverse();
为什么要reverse()一下,如果你要用uni.navigateBack({delta: count}),这将会是一个坑count是统计你要返回的页面数量,如果不调用reverse()你会从队列的头开始遍历,但是count要从底部返回累计,所以getCurrentPages().reverse(); 后才能把原先的队列结构反过来,我们在进行遍历才能得到一个正确的顺序
let currentPage = pages[pages.length -1] //可以获得当前页面,如果要获取指定页面的栈实例

let count = 0;
pages.forEach(e=>{ //如果打开多个页面,用遍历方式可获得指定页面并用
if(e.route == 'pages/xxx/xxx'){
可获得指定的页面栈实例
uni.navigateBack({delta: count})
}
})

0 关注 分享

要回复文章请先登录注册

新手村

新手村

回复 1***@qq.com :
getCurrentPages 返回是空的
2024-07-04 20:04
1***@qq.com

1***@qq.com

回复 1***@qq.com :
我也是这样,哥你有解决吗
2024-04-26 12:01
DCloud_UNI_GSQ

DCloud_UNI_GSQ

回复 1***@qq.com :
仅特定项目能复现此问题吗?
2024-04-09 17:14
1***@qq.com

1***@qq.com

回复 DCloud_UNI_GSQ :
运行H5是正常的,运行app真机调试报这个错误[Vue warn]: Error in event handler for "view.webviewReady": "TypeError: getCurrentPages is not a function",尝试把页面上的getCurrentPages 都去掉依然报这个错误
2024-04-09 11:30
DCloud_UNI_GSQ

DCloud_UNI_GSQ

回复 1***@qq.com :
是任何时机都找不到getCurrentPages还是特定时机找不到getCurrentPages?
2024-04-09 11:01
1***@qq.com

1***@qq.com

回复 DCloud_UNI_GSQ :
vue2
2024-04-09 10:14
DCloud_UNI_GSQ

DCloud_UNI_GSQ

回复 1***@qq.com :
vue2还是vue3?
2024-04-08 12:17
1***@qq.com

1***@qq.com

回复 1***@qq.com :
我也遇到这个问题,你解决了吗
2024-04-08 10:44
DCloud_UNI_GSQ

DCloud_UNI_GSQ

回复 1***@qq.com :
vue2还是vue3?
2024-04-08 09:54
DCloud_UNI_GSQ

DCloud_UNI_GSQ

楼主说的app是vue2还是vue3?
2024-04-08 09:54