主要用于h5局部下拉闪动问题
参考博客:
//外面套一层盒子
<view class="mt-8">
<scroll-view
class="list"
scroll-y="true"
:refresher-enabled="true"
:refresher-triggered="triggered"
@refresherpulling="onPulling"
@refresherrefresh="onRefresh"
@refresherrestore="onRestore"
@refresherabort="onAbort"
>
<view v-for="(item, index) in tableList" :key="index">
<ShoppingCard :checked.sync="item.checked" :item="item" />
</view>
<NoData v-if="isOpenInterface && tableList.length <= 0" />
<uni-load-more v-else :status="status" />
</scroll-view>
</view>
data() {
return {
triggered: false,
isOpenInterface: false,//用于判断是否在接口请求后
}
},
在onLoad中初始化 是否在下拉状态
onLoad(options) {
// 获取系统信息
this.getSystemInfo()
this._freshing = false
},
主要方法
onPulling(e) {
if (e.detail.deltaY < 0) return // 防止上滑页面也触发下拉
// #ifdef MP-WEIXIN
this.triggered = true
// #endif
},
// 下拉刷新触发
async onRefresh() {
if (this._freshing) return
this._freshing = true
// #ifdef H5
this.triggered = true
// #endif
this.isOpenInterface = false
this.searchParams.current = 1
await this.getList()
this.triggered = false
this._freshing = false
},
// 自定义下拉刷新被复位
onRestore() {
this.triggered = false // 需要重置
},
// 自定义下拉刷新被中止
onAbort() {
this.triggered = false // 需要重置
this._freshing = false
},