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

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

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

通过自定义返回逻辑实现

 

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