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

1,291 阅读1分钟

uniapp自定义头部导航栏后,页面刷新前能用getCurrentPages()获取路由栈的数组,但是刷新之后路由栈丢失了,getCurrentPages()返回undefined,而且uni.navigateBack()无法返回上一个界面,指定delta也返回不了,但是可以点击浏览器顶部导航栏的返回按钮返回,想让页面刷新也能获取到路由栈:

在此记录一下,方便以后查阅;

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

解决

goBack() {  
  let canNavBack = getCurrentPages();  //获取路由栈
  if(canNavBack && canNavBack.length>1) {    //判断是否刷新了浏览器,如果刷新了浏览器,路由栈只有当前一个
    uni.navigateBack({  
      delta: 1  
    });  
  } else {  
    history.back();  
  }  
}

注意:这个是用于H5的,发布到多端使用可能会用到官方的条件编译:(uniapp.dcloud.io/platform?id…)