ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

React倒计时若干种实现方法

2022-06-28 13:34:55  阅读:158  来源: 互联网

标签:倒计时 const React num useState setLinkText 若干种 let setDisable


html:

<Button type="link" onClick={HandleSubmit} disabled={disableFlag}>{linkText}</Button>
变量定义:
  const [disableFlag, setDisable] = useState<boolean>(false)
  const[linkText,setLinkText]=useState<string>('获取验证码')

1.原始版:

代码:

  let num =10
  let [num,setDisableSeconds]=useState<number>(10)
  const HandleSubmit = () => {
      setDisable(true);
     let x = setInterval(() => {
        if(num>0)
        {
          num=num-1;
        }
       setLinkText(num+'');
       if(num==0)
       {
         clearInterval(x);
         setDisable(false);
         setLinkText(linkText);
       }
      }, 1000);

  }

2.进阶版:

let newTimer =null;
  const [num, setDisableSeconds] = useState(10);
  const HandleSubmit = () => {
    setDisable(true);
    newTimer = setInterval(() => {
      if (num > 0) {
        setDisableSeconds((c) => c - 1);
      }
    }, 1000);
  }

  useEffect(()=>{
    if(disableFlag){
      setLinkText(num+'');
      if(num<0){
        clearInterval(newTimer);
        setDisable(false);
      }
    } else {
      setLinkText('获取验证码');
    }
  })

 

标签:倒计时,const,React,num,useState,setLinkText,若干种,let,setDisable
来源: https://www.cnblogs.com/jizhong/p/16419068.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有