微信小程序的坑之——onReachBottom

286 阅读1分钟

新项目发现一个bug,使用onReachBottom时,第一次上拉正常触发,第二次继续上拉是触发不了的,只有往回滑动一定距离再山上拉才能触发

image.png 翻了一下文档发现了原因:“在触发距离内滑动期间,本事件只会被触发一次”。

意思就是,上拉触发该事件一次后,如果页面没有回到触发距离以外(即滑回去足够距离),再怎么上拉都不会重新触发该事件,必须滑上去再滑下来才行。所以并不是任意滑动都能触发事件,这是正常的,并不是代码写错了。

那么,该如何解决呢

第一种:可以直接用组件库,比如t-design的 't-pull-down-refresh' 组件,组件自带事件:scrolltolower,大部门组件库都有类似的功能。

第二种:自己封装一个触底的方法:监听滚动事件,当

<scroll-view 
  scroll-y 
  style="height: 100vh;" 
  bindscroll="onScroll"
>
  <view wx:for="{{list}}" wx:key="id">{{item}}</view>
</scroll-view>
Page({
  onScroll(e){
    const query = wx.createSelectorQuery();
    query.select('scroll-view').boundingClientRect(res =>{
      if (res.scrollHeight - res.scrollTop <= res.height + 10) {
        console.log('触底加载更多...');
      }
    }).exec();
  }
});