useEffect、setTimeout防止按钮连续点击

为了处理按钮多次点击,会连续跳转的问题,使用了

  • useEffect
  • setTimeout
import React, { useState, useEffect } from 'react';

const Scenes = () => {
  const [btnDisabled, setBtnDisabled] = useState(false);

  const handleClick = () => {
    setBtnDisabled(true);
    window.location.href = 'www.baidu.com';
  };

  useEffect(() => {
    let timer;
    if (btnDisabled) {
      timer = setTimeout(() => {
        setBtnDisabled(false);
      }, 2000);
    }
    return () => {
      if (timer) { clearTimeout(timer); }
    };
  }, [btnDisabled]);

  return (
    <button
      disabled={btnDisabled}
      onClick={handleClick} />
  );
};

export default Scenes;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInt...
    晚晴幽草阅读 1,725评论 1 18
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,313评论 0 10
  • Web网站测试流程和方法(转载) 1测试流程与方法 1.1测试流程 进行正式测试之前,应先确定如何开展测试,不可盲...
    夏了夏夏夏天阅读 1,366评论 0 0
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,490评论 0 1
  • 作为领导者要做好三个角色:做好设计师的角色,设计好整个团队的目的、运作流程、和学习流程,做好老师的角色,把设计...
    孙倩阅读 579评论 0 0

友情链接更多精彩内容