美文网首页
RN笔记 - 禁止事件被连续快速点击

RN笔记 - 禁止事件被连续快速点击

作者: 金丝楠 | 来源:发表于2019-12-12 13:39 被阅读0次

场景:开发过程中,我们有时需要对 function 或者 fetch 接口加保护,禁止事件被连续触发多次。

1、新建 handlerOnceTap.js

/* eslint-disable no-undef */
let isCalled = false;
let timer;

/**
 * 禁止连续快速点击
 *
 * @param functionTobeCalled method 对调函数体
 * @param interval  定时器
 */

export default (HandlerOnceTap = (functionTobeCalled, interval = 1000) => {
  if (!isCalled) {
    isCalled = true;
    clearTimeout(timer);
    timer = setTimeout(() => {
      isCalled = false;
    }, interval);
    return functionTobeCalled();
  }
});

2、触发时加保护,1s内只执行1次

import HandlerOnceTap from "./handlerOnceTap";

// 对 this.onReq() 加保护
HandlerOnceTap(() => this.onReq());

当然还有其他的解决方案,比如触发1次后立即对按钮置灰,通过控制 state 属性不允许再点击。等callback之后恢复按钮的可点击状态。

相关文章

网友评论

      本文标题:RN笔记 - 禁止事件被连续快速点击

      本文链接:https://www.haomeiwen.com/subject/qoxtnctx.html