code学习

uniapp 实现类似keep-alive效果(从列表页进入详情页,返回列表页滚动条位置不变)

使用uniapp 做小程序已经大半年了。uniapp 相比原生的小程序省事儿很多,而且能兼容多平台H5,app,微信小程序,支付宝小程序等。

但辩证的看待问题,有利就有弊。用uniapp 开发离不开看文档,当你用到一个个vue特性的需要确认在uniapp中支不支持。

就比如今天的标题如果说在vue中使用keep-alive就能轻松解决,而这个属性在uniapp中不支持。所以我使用scrollTop来实现类似效果。

uniapp 实现类似keep-alive效果(从列表页进入详情页,返回列表页滚动条位置不变)

 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值渲染到页面上。

uniapp 实现类似keep-alive效果(从列表页进入详情页,返回列表页滚动条位置不变)
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
    })
}      

好了,打完收工,希望可以帮到你。