收藏
回答

wx.redirectTo重复添加相同页面到堆栈中

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.redirectTo重复添加页面到堆栈中 客户端 7.0.4 2.7.7

- 当前 Bug 的表现(可附上截图)

从A页面通过wx.navigateTo跳转至B页面,在B页面通过wx.navigateTo跳转到C页面,然后从C页面通过wx.redirectTo跳转到B页面,这个时候通过wx.navigateBack返回时会返回两次B页面。


- 预期表现

已经存在在页面栈中的页面不希望再打开一个新的。


- 复现路径

https://developers.weixin.qq.com/s/pQVrm2mn7Bam

- 提供一个最简复现 Demo

https://developers.weixin.qq.com/s/pQVrm2mn7Bam

回答关注问题邀请回答
收藏

7 个回答

  • 王万波
    王万波
    2021-03-12

    微信小程序的确可以参考flutter里面的路由逻辑来减少此类问题处理的复杂度。flutter中有一个navigator跳转功能:Navigator.pushNamedAndRemoveUntil(context, '/page/abc', ModalRoute.withName('/'));可以实现删除除“/”根mainroute的其他route,跳转到abc


    2021-03-12
    有用
    回复
  • 刨顶怪
    刨顶怪
    2020-01-09

    有时候业务场景需求 就是 要关闭 C页面,不能说 直接就用 Back回退两次就好了,回退两次是会在此期间显示C页面, 在手机卡顿时候 是会偶现 只回退一次的现象, 在ios中回退两次也会偶现 小程序直接退出的情况

    也不能说是楼主的逻辑问题,解决方法 我是 后面的都重定向,当流程结束的那一页 跳转是用 reLaunch


    2020-01-09
    有用
    回复
  • 向死而生
    向死而生
    2019-12-04

    我也遇到了,这个只能A之后的都用redirectTo就可以解决了。。。在redirectTo之间用了navigateTo,就会出现这种死循环的问题

    2019-12-04
    有用
    回复
  • 小晴儿.
    小晴儿.
    2019-10-18

    咦,楼主你的这个复现链接是怎么弄得吖,这样好方便

    2019-10-18
    有用
    回复 2
    • keeper
      keeper
      2019-10-18
      开发工具新建代码片段
      2019-10-18
      回复
    • 小晴儿.
      小晴儿.
      2019-10-18回复keeper
      嗯嗯  刚刚发现了 谢谢
      2019-10-18
      回复
  • 鲤子
    鲤子
    2019-07-22

    -0- 不知道是你代码逻辑问题还是怎样,但是我发现tabbar页面确实会加载2次导致页面栈不对了。

    2019-07-22
    有用
    回复
  • 祺爸💎
    祺爸💎
    2019-07-22

    是你代码逻辑的问题

    2019-07-22
    有用
    回复 10
    • keeper
      keeper
      2019-07-22
      请问那块有问题呢?
      2019-07-22
      回复
    • Bob
      Bob
      2019-07-22回复keeper
      back就是关闭当前页面了啊
      2019-07-22
      回复
    • keeper
      keeper
      2019-07-22回复Bob
      你好 我的问题是B页面被两次添加进了页面栈的问题
      2019-07-22
      回复
    • 祺爸💎
      祺爸💎
      2019-07-22回复keeper
      两次都是你自己添加的
      2019-07-22
      回复
    • keeper
      keeper
      2019-07-22回复祺爸💎
      你觉得同一页面两次被添加进堆栈这种设计合理吗?
      2019-07-22
      回复
    查看更多(5)
  • Bob
    Bob
    2019-07-22

    那你干嘛要redirect到B页面呢,干嘛不用back呢?

    2019-07-22
    有用
    回复 9
    • keeper
      keeper
      2019-07-22
      业务场景需要关闭C页面,同时跳转到B
      2019-07-22
      回复
    • 祺爸💎
      祺爸💎
      2019-07-22回复keeper
      back就是这样的
      2019-07-22
      回复
    • keeper
      keeper
      2019-07-22回复祺爸💎
      已经在堆栈中打开的页面不需要打开两个重复的页面,这种逻辑明显是有问题的吧!
      2019-07-22
      回复
    • 祺爸💎
      祺爸💎
      2019-07-22回复keeper
      是你逻辑有问题
      2019-07-22
      回复
    • keeper
      keeper
      2019-07-22回复祺爸💎
      。。。。什么问题哟?
      2019-07-22
      回复
    查看更多(4)
登录 后发表内容