小程序
小游戏
企业微信
微信支付
扫描小程序码分享
wx.showLoading,加上mask:true,真机上快速点击还是能重复请求
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
请问解决了吗?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
分享一下我的解决方案:
可以用一个组件来去代替可被点击的view,组件内部用一个变量去记录最后一次点击时间,如果这一次的点击时间距离上一次还没过超过x(如200ms),则忽略此次点击。
代码大概如下。
组件:
class="clickable-view" bindtap="_onTap">
Component({
ready() {
this.lastClickTs = 0;
this.minTapThreshold = 200;
},
properties: {
tapEventData: String
methods: {
_onTap() {
let ts = new Date().getTime();
let elapsed = ts - this.lastClickTs;
if (elapsed <= this.minTapThreshold) {
return;
}
this.lastClickTs = ts;
this.triggerEvent("onTapClickableView", {data: this.properties.tapEventData}, {});
});
用例:
tapEventName(event) {
let data = event.detail.data; // "something"
(格式化成代码了发现老被裁减掉。。。)
不能用 mask 来防抖,可以加一个变量要控制快速点击的问题
你的mask是控制防止重复请求的变量?如果是的话,请设置成false,等你加载完成再设置true
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
请问解决了吗?
分享一下我的解决方案:
可以用一个组件来去代替可被点击的view,组件内部用一个变量去记录最后一次点击时间,如果这一次的点击时间距离上一次还没过超过x(如200ms),则忽略此次点击。
代码大概如下。
组件:
Component({
ready() {
this.lastClickTs = 0;
this.minTapThreshold = 200;
},
properties: {
tapEventData: String
},
methods: {
_onTap() {
let ts = new Date().getTime();
let elapsed = ts - this.lastClickTs;
if (elapsed <= this.minTapThreshold) {
return;
}
this.lastClickTs = ts;
this.triggerEvent("onTapClickableView", {data: this.properties.tapEventData}, {});
}
},
});
用例:
tapEventName(event) {
let data = event.detail.data; // "something"
}
(格式化成代码了发现老被裁减掉。。。)
不能用 mask 来防抖,可以加一个变量要控制快速点击的问题
你的mask是控制防止重复请求的变量?如果是的话,请设置成false,等你加载完成再设置true