uniapp 实现类似keep-alive效果(从列表页进入详情页,返回列表页滚动条位置不变)
使用uniapp 做小程序已经大半年了。uniapp 相比原生的小程序省事儿很多,而且能兼容多平台H5,app,微信小程序,支付宝小程序等。
但辩证的看待问题,有利就有弊。用uniapp 开发离不开看文档,当你用到一个个vue特性的需要确认在uniapp中支不支持。
就比如今天的标题如果说在vue中使用keep-alive就能轻松解决,而这个属性在uniapp中不支持。所以我使用scrollTop来实现类似效果。
uniapp的页面生命周期函数onPageScroll可以拿到滚动距离的值。
1,将top值 存到data中。
onPageScroll : function(e) { this.scrollTop = e.scrollTop; },
2,在点击跳转详情的方法中,将top值存缓存。
toDetail(id) { uni.setStorage({ key:"listTop", data:this.scrollTop }) ... }
3,在onShow中使用uni.pageScrollTo 将缓存的top值渲染到页面上。
onShow() { //滚动条 uni.getStorage({ key:"listTop", success: (res) => { if(!isNaN(res.data)){ var lefts = uni.pageScrollTo({ scrollTop:res.data, duration:0 }) } } }) },
4,页面关闭时将top值清空
onUnload() { uni.setStorage({ key:"listTop", data:0 }) }
好了,打完收工,希望可以帮到你。