react写的模拟发送验证码效果

// eslint-disable-next-line no-use-before-define
import React, { useState, useRef } from 'react'
import ReactDOM from 'react-dom'
export default function CountDown () {
  // 定义count状态
  const [count, setCount] = useState(10)
  // 定义显示与隐藏的状态
  const [isShow, setShow] = useState(false)
  // const timeID = null
  // console.log(timeID)
  // timeRef的定时器名字
  const TimeRef = useRef()
  console.log(count, setCount)
  console.log(useRef)
  const hClick = () => {
    // 禁用按钮
    setShow(true)
    // 倒计时
    TimeRef.current = setInterval(() => {
      setCount(count => {
        if (count === 0) {
          // 清除定时器
          clearInterval(TimeRef.current)
          // 启用按钮
          setShow(false)
          setCount(10)
        }
        return count - 1
      })
    }, 1000)
  }
  return (<div>
        倒计时组件
        <button type="button"
        onClick={() => { hClick(!isShow) }}
        disabled={isShow}
        // eslint-disable-next-line no-constant-condition
        >{ isShow ? count + '秒再试' : '发送验证码'}</button>
    </div>)
}
ReactDOM.render(<CountDown />, document.getElementById('root'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值