最近写uniapp项目的时候发现有时候需要更新页面数据,我是用h5强制刷新页面后就无法返回上一个页面,查了文档后发现是页面栈丢失问题。百度看了很多大佬们的方法,方法基本一致,使用原生JS的history对象,封装一个兼容uniappapi和原生js的返回的方法。在此记录一下方法letcanNavBack=getCurrentPages()if(canNavBack&&canNavBack.length>1){uni.navigateBack()}else{history.back();}//在返回的方法里替换
在微信官方文档中有这么一个方法:getCurrentPages()getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。注意:getCurrentPages()仅用于展示页面栈的情况,请勿修改页面栈,以免造成页面状态错误在日常的实际项目开发中,你想从A页面返回到B页面并且带些参数的时候,例如选择收货地址或自提门店等场景时需要返回。那么此时你可以这样:1.传递单个数据letpages=getCurrentPages();//获取所有页面栈实例列表letnowPage=pages[pages.length-1];//当前
分析:一般调用navigateBack返回上一页时有两种情况不需刷新:查看内容,状态未改变.需刷新:在第二页编辑后,上一页列表中与之对应的数据状态一起改变目前想出的方案是在回退之前修改上页判断条件,回退后重新获取判断条件在决定是否刷新。示例:详情页修改状态成功后,准备回退到上一页之前,将上一页的是否刷新参数值改为是的状态letpages=getCurrentPages();letprevPage=pages[pages.length-2];//上一个页面//直接调用上一个页面的setData()方法,把数据存到上一个页面中去prevPage.setData({ isRefresh:1})//再
分析:一般调用navigateBack返回上一页时有两种情况不需刷新:查看内容,状态未改变.需刷新:在第二页编辑后,上一页列表中与之对应的数据状态一起改变目前想出的方案是在回退之前修改上页判断条件,回退后重新获取判断条件在决定是否刷新。示例:详情页修改状态成功后,准备回退到上一页之前,将上一页的是否刷新参数值改为是的状态letpages=getCurrentPages();letprevPage=pages[pages.length-2];//上一个页面//直接调用上一个页面的setData()方法,把数据存到上一个页面中去prevPage.setData({ isRefresh:1})//再