收藏
回答

wx.showLoading,加上mask:true,真机上快速点击还是能重复请求?

wx.showLoading,加上mask:true,真机上快速点击还是能重复请求

回答关注问题邀请回答
收藏

4 个回答

  • 邱枫
    邱枫
    2021-05-07

    请问解决了吗?


    2021-05-07
    有用
    回复
  • 李京龙
    李京龙
    2020-09-07

    分享一下我的解决方案:

    可以用一个组件来去代替可被点击的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"

    }


    (格式化成代码了发现老被裁减掉。。。)


    2020-09-07
    有用
    回复
  • Felix
    Felix
    2020-05-28

    不能用 mask 来防抖,可以加一个变量要控制快速点击的问题

    2020-05-28
    有用
    回复 2
    • three
      three
      2020-05-28
      之前试了是可以的,今天突然发现又不行了
      2020-05-28
      回复
    • Felix
      Felix
      2020-05-28回复three
      这个不稳定吧,showLoading 是微信支持的,JS 和 微信交互需要时间,不能保证一定会在下次点击前展示出来的
      2020-05-28
      回复
  • 茗
    2020-05-28

    你的mask是控制防止重复请求的变量?如果是的话,请设置成false,等你加载完成再设置true

    2020-05-28
    有用
    回复 2
    • three
      three
      2020-05-28
      是小程序api的mask
      2020-05-28
      回复
    • 茗
      2020-05-28回复three
      那你是不是加载没完成就隐藏了弹窗了?你加个新的变量把
      2020-05-28
      回复
登录 后发表内容
问题标签