微信小程序页面左右滑动与上下拉刷新的实现方案

时间:2022-08-31 21:13:43

关于上下拉刷新

微信小程序官方建议使用page的上下拉刷新,那么什么时候会触发上下拉刷新呢

page页面上下拉刷新

微信小程序页面左右滑动与上下拉刷新的实现方案

  • 下拉

通过向下滑动页面即可触发page页面的onPullDownRefresh方法

  • 上滑

上滑的触发分两种情况

  • 内容不能充满page
    • 此时你第一次上拉会触发一次onReachBottom
      • 解析:
      • 微信这么做的原因是可以让我们在这里进行一次处理提醒用户
    • 再次上拉不会触发
  • 内容充满page
    • 通过上滑即可触发page页面的onReachBottom方法

scrollview上下拉刷新

scrollview的上下拉刷新是通过方法bindscrolltoupper与bindscrolltolower,更过相关的细节请参考微信小程序scrollview组件

注:scrollview的上下拉刷新并没有页面下拉滑动长条那种显示,只是单纯的触发,如果你想有那种效果需要自己去实现(基于onScroll方法)

想必这也是微信小程序建议使用page刷新的原因

页面左右滑动

微信小程序页面左右滑动与上下拉刷新的实现方案

当然可以使用手势进行手势滑动,单如果你知道有个神奇的组件叫做swiper我想你会考虑使用swiper而不是自己去touch

swiper组件的使用请参考微信小程序swiper组件

微信小程序页面左右滑动与上下拉刷新的实现方案

tab下面的每个页面的滑动不一样问题

如果此时,你滑动你会发现每个tab下的页面上下滑动都会一起滑动,为了保证每个tab下的内容自己滑动,此时考虑使用scrollview进行封装

哎呀page的onReachBottom失效了

这个时候你上拉你会发现不会再触发onReachBottom方法,这个原因就在于前面所说的scrollview的滑动与page会冲突,那么此时就需要触发onReachBottom方法触发的内容,与之相关的是scrollview的bindscrolltolower方法,重写这个方法,并将onReachBottom方法内容提出单独分装,一起调用即可

哎呀,有的页面可以在内容页下拉刷新有的不可以

这点的方案目前暂未实现,如果路过的大佬们有解决方案请留言提出或者联系我,发到我的邮箱,小弟在此谢过
为何会有这样的原因呢?
还是scrollview的滑动与page冲突问题,如果你仔细阅读scrollview的文档你会发现scrollview的滑动会屏蔽page的onPullDownRefresh方法,此时需要我们从顶部下拉接口。那么为何有的页面可以下拉呢,这是因为scrollview的内容不足填充整个页面,此时它不与page冲突可以下拉。

总结

微信小程序在实践上不必原生、RN还是有很多限制,由于其属于轻量级的开发工具还是很方便,毕竟人家定位就是小程序~