微信小程序修改历史路由列表

845 阅读1分钟

微信小程序是不支持修改历史路由列表的,但是在一些需求中需要操作路由表:我们需要从 d 页面跳转回到b页面,在 b 页面使用 uni.navigateBack({}) 跳转到的页面是 a 页面,这就需要我们去路由列表中将页面 c和d 删掉,然后到页面 b,如下图:

企业微信截图_12e84cce-7bea-4efe-866a-70fc1b527f29.png

解决方案如下:

使用 getCurrentPages() 函数获取到打开过的页面路由数组,获取到的数组[infoA, infoB, infoC, infoD]

获取到路由的数组后就可以使用 uni.navigateBack({}),这里是需要用到 delta 属性来返回前几页。

​uni.navigateBack({
  delta: 指定列表的位置,页面位置是 getCurrentPages().length - 页面所在的下标
  //返回的页面数,如果 delta 大于现有页面数,则返回到首页。
 })

这里的 delta 属性接收的是一个number类型 默认值是1,如果值大于 getCurrentPages() 返回的数组长度返回到首页。

注意⚠️:

  • 不要尝试修改页面栈,会导致路由以及页面状态错误。
  • 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。