直接下拉

- 发布:2023-08-24 14:12
- 更新:2023-08-24 21:25
- 阅读:605
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: w10
HBuilderX类型: 正式
HBuilderX版本号: 3.8.12
手机系统: Android
手机系统版本号: Android 13
手机厂商: 华为
手机机型: nova 5
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
下拉触发方法onPulling,
松手触发方法onRefresh
下拉触发方法onPulling,
松手触发方法onRefresh
实际结果:
下拉直接触发onPulling,onRefresh
下拉直接触发onPulling,onRefresh
bug描述:
【报Bug】scroll-view中的@refresherrefresh在安卓手机app运行下拉未松手就触发,导致无法在该方法里改变refresher-enabled,不然就一直抽搐,在微信小程序开发者工具没问题
<scroll-view scroll-y="true" :refresher-enabled="scrollData" :refresher-threshold="100"
:refresher-triggered="scroll.trigger" refresher-default-style="white" :scroll-anchoring="true"
@refresherrefresh="onRefresh" @refresherpulling="onPulling"
class="w-max flex-1 o-hidden"></scroll-view>
onPulling() {
if (this.LIST.request || this.scroll.trigger) return;
console.log("l", this.scroll.trigger)
this.scroll.trigger = true;
},
async onRefresh() {
this.scroll.trigger = false;
},

你这是测试这个组件怎么用呢吧,逻辑就不对的呢。onPulling刚触发刷新,然后就走到onRefresh()了,立刻又把刷新状态改了,所以就只能抖动了啊。正常情况onRefresh()里面都做网络请求之类,请求完成了才设置false呢,可以加个延时模拟一下
<scroll-view scroll-y="true" :refresher-enabled="scrollData" :refresher-threshold="100"
:refresher-triggered="scroll.trigger" refresher-default-style="white" :scroll-anchoring="true"
@refresherrefresh="onRefresh" @refresherpulling="onPulling"
class="w-max flex-1 o-hidden"></scroll-view>
onPulling() {
if (this.LIST.request || this.scroll.trigger) return;
console.log("l", this.scroll.trigger)
this.scroll.trigger = true;
},
async onRefresh() {
setTimeout(() => { // 加延时,不要那么快就设置false
this.scroll.trigger = false;
}, 3000)
},
当然最好的例子还是看文档那个,里面加了判断是否在刷新中的状态
TLZ (作者)
问题已解决了谢谢大佬
2023-09-05 11:35
w***@gmail.com
回复 TLZ: 客气啦,解决了就好,我也是刚开始学习呢
2023-09-05 11:47