新项目发现一个bug,使用onReachBottom时,第一次上拉正常触发,第二次继续上拉是触发不了的,只有往回滑动一定距离再山上拉才能触发
翻了一下文档发现了原因:“在触发距离内滑动期间,本事件只会被触发一次”。
意思就是,上拉触发该事件一次后,如果页面没有回到触发距离以外(即滑回去足够距离),再怎么上拉都不会重新触发该事件,必须滑上去再滑下来才行。所以并不是任意滑动都能触发事件,这是正常的,并不是代码写错了。
那么,该如何解决呢
第一种:可以直接用组件库,比如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();
}
});