react 实现一个发送手机验证码的功能

import React, { ChangeEvent, useEffect, useState } from 'react';

function Effect() {
   let [num,setNum]=useState(0);
   let [tel,setTel]=useState("");

   const handleSend=()=>{
    let a = 10;
    console.log(tel,'手机号');
    var reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
    if (reg_tel.test(tel)) {
        setNum(a)
        const t1 = setInterval(()=>{
            a=a-1
            setNum(a)
            if(a==0){
                clearInterval(t1)
            }
        },1000)
    }else {
        alert('手机号格式不正确')
    }
   }
   const onChangeInput = (e:ChangeEvent<HTMLInputElement>) =>{
       console.log("Input改变",e.target.value);

       var reg_num = /^[0-9]*$/
       if (reg_num.test(e.target.value)) {
        setTel(e.target.value)
        console.log(333);
       }
   }
   useEffect(()=>{
       console.log('数据发生了变化,触发useEffect',num);
   })
  return (<div>
      <input type="text" value={tel}  onChange={onChangeInput} />
     <button disabled={num!==0} onClick={handleSend}>{num==0?'发送':num+"秒"}</button>
  </div>);
}

export default Effect;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值