weixin_49857754 2021-05-11 15:58 采纳率: 60%
浏览 50
已采纳

uni APP 路由页面栈反复横跳的问题

我的路由顺序是 A-->B-->C-->D--(navigateTo)>C-->E--(navigateTo)>C   然后在C界面 我点击返回时候怎么 按照C-->B-->A的顺序返回 尝试过使用getCurrentPages() 用不好 感觉还是晕乎乎的

  • 写回答

1条回答 默认 最新

  • iMingzhen 2021-05-11 16:21
    关注

    有思路,你可以尝试下可不可行

    通过自定义返回逻辑实现

     

    1.页面返回时拦截

    2.利用uniapp的getCurrentPages方法,拿到路由栈,如[A,B,C,D,C,E,C] 或者通过监听路由变化利用uni.storage记录得到的路由栈

    3.将其中的页面地址取出并反向记录下标。

    得到

    [
        {
            url:A,
            index:6,
        },
        ...
        {
            url:C,
            index:2,
        }
        {
            url:E,
            index:1,
        },
        {
            url:C,
            index:0,
        }
    ]

    3.将数组去重并过滤掉你不想返回的页面地址。得到

    [
        {
            url:A,
            index:6,
        },
        {
            url:B,
            index:5,
        },
        {
            url:C,
            index:0,
        }
    ]

    4.取出对应需要返回的页面数并返回

    取的是数组的倒数第二位的下标,也就是你需要返回绕过的页面数

    比如C到B,delta为5

    uni.navigateBack({
        delta: 5 //需要返回的页面数
    });

    相关文档:

    自定页面返回事件:https://ask.dcloud.net.cn/article/35120

    页面栈:https://uniapp.dcloud.io/api/window/window?id=getcurrentpages

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画