B丶iang
B丶iang
  • 发布:2020-05-22 18:29
  • 更新:2022-09-19 17:25
  • 阅读:9606

uniapp页面刷新之后路由栈丢失,无法返回指定的上一个界面

分类:uni-app

uniapp页面刷新前能用getCurrentPages()获取路由栈的数组,但是刷新之后路由栈丢失了,getCurrentPages()返回undefined,而且uni.navigateBack()无法返回上一个界面,指定delta也返回不了,但是可以点击顶部导航栏的返回按钮返回,不过也只能返回首页。想让页面刷新也能获取到路由栈(因为无法阻止浏览器被刷新),有哪位大佬能提供一下解决方案吗?

                 // 这是调用的方法  
        deleteContact() {  
            let page = getCurrentPages();  
            let beforePage = pages[pages.length - 2];//上个页面  
            if(beforePage && beforePage.route === 'pages/my/mytool/ComuseInfo') {  
                console.log('刷新前:', beforePage)  
                beforePage.getList();  
            } else {  
                console.log('刷新后:', beforePage)  
                // uni.navigateBack()  
            }  
        },

2020-05-22 18:29 负责人:无 分享
已邀请:
ielgnod

ielgnod

官网API 里有讲这个问题:

H5端页面刷新之后页面栈会消失,此时navigateBack不能返回,如果一定要返回可以使用history.back()导航到浏览器的其他历史记录。

个人实践:

goBack() {  
  let canNavBack = getCurrentPages();  
  if(canNavBack && canNavBack.length>1) {  
    uni.navigateBack({  
      delta: 1  
    });  
  } else {  
    history.back();  
  }  
}
  • ielgnod

    上面的判断我只在H5做了测试,是ok的,如果发布到多端出现问题的话,可能会用到官网的条件编译:

    https://uniapp.dcloud.io/platform?id=%e6%9d%a1%e4%bb%b6%e7%bc%96%e8%af%91

    2021-03-31 10:13

  • 紫色风铃

    回复 ielgnod: 怎么判断页面是否刷新?

    2021-07-14 09:09

RushMan

RushMan

同,H5感觉可以用history.back()代替一下

一个网名

一个网名

h5还是小程序?

  • B丶iang (作者)

    H5

    2020-05-26 16:01

  • 9***@qq.com

    回复 B丶iang: 这个问题解决了吗

    2020-05-30 17:27

  • 一个网名

    回复 B丶iang: 我感觉。。。。应该就是这样吧,刷新就算是重新打开应用了吧~

    2020-06-17 22:47

9***@qq.com

9***@qq.com

我也遇到了这个问题在线等好着急

包拯

包拯 - 包青天

怎么办

今天回复我了吗

今天回复我了吗 - uniapp 粉丝条

mark

yoooo

yoooo

mark

1***@qq.com

1***@qq.com

onbackpress监听返回动作不就好了

RushMan

RushMan

https://uniapp.dcloud.io/api/router?id=navigateback
看介绍说这个不算BUG,也是说用用这个替代,无语了

2***@qq.com

2***@qq.com - 弱小又无助的可怜人

在线等

harlanjun

harlanjun

在线等解决

爱吃鱼的靖哥哥

爱吃鱼的靖哥哥 - 行走在全栈路上的码农

这个页面栈能手动设置吗

要回复问题请先登录注册