前端react验证码6位随机码(大小写字母+数字)

简介: 前端react验证码6位随机码(大小写字母+数字)

前端react验证码6位随机码(大小写字母+数字)

import React, { useState } from 'react';
const Index = () => {
    const [VCodeTime, setVCodeTime] = useState(60);
    const [sendSwitch, setSendSwitch] = useState(true);
    const randomNum =  ()=> {
        let arr = [1, 2, 3] // 保证六位随机码包含数字+大写字母+小写字母
        let code = ''
        function getRandom (min, max) {
          return Math.round(Math.random() * (max - min) + min)
        }
        function randomsort (a, b) {
          return Math.random() > 0.5 ? -1 : 1
          // 用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
        }
        for (let i = 0; i < 3; i++) {
          arr.push(getRandom(1, 3)) // 补成六位
        }
        arr.sort(randomsort) // 打乱数组
        for (let i = 0; i < 6; i++) {
          let type = arr[i]
          switch (type) {
            case 1:
              code += String.fromCharCode(getRandom(48, 57)) // 数字
              break
            case 2:
              code += String.fromCharCode(getRandom(65, 90)) // 大写字母
              break
            case 3:
              code += String.fromCharCode(getRandom(97, 122)) // 小写字母
              break
          }
        }
        console.log(code)
      }
    // 点击发生验证码 
    const sendCode = () => {
        if (sendSwitch) {
            // 防止在发送验证码过程中再次点击
            setSendSwitch(!sendSwitch); 
            let time = 60 //60秒
            // 调用随机码函数
            randomNum()
            // 定时器
            let timer = setInterval(() => {
                time--;
                setVCodeTime(time);
                // 一分钟后清空定时器
                if (time === 0) {
                    clearInterval(timer);
                    setVCodeTime(60); 
                    // 清空后 控制器再次变为true
                    setSendSwitch(true);
                }
            }, 1000);
        }
        return
    };
    return (
        <div style={{ display: 'flex' }}>
            <input />
            <div
                style={sendSwitch ? { color: 'blue' } : { color: '#9999', cursor: 'not-allowed', left: '250px' }}
                onClick={sendCode}
            >
                发送验证码 {sendSwitch ? '' : `${VCodeTime}`}
            </div>
        </div>
    );
};
export default Index;
相关文章
|
10天前
|
资源调度 前端开发
每个前端开发人员都必须知道的 8 个 React 组件库!【建议收藏】
每个前端开发人员都必须知道的 8 个 React 组件库!【建议收藏】
|
13天前
|
缓存 监控 前端开发
WEB前端三大主流框架:React、Vue与Angular
在Web前端开发中,React、Vue和Angular被誉为三大主流框架。它们各自具有独特的特点和优势,为开发者提供了丰富的工具和抽象,使得构建复杂的Web应用变得更加容易。
41 6
|
13天前
|
前端开发 开发者
彻底颠覆!React Hooks带来前端开发的革命,你准备好了吗?
【8月更文挑战第6天】在现代Web开发中,React作为顶级前端框架,以高效性能和丰富生态著称。React Hooks自16.8版本引入,赋予函数组件使用状态和生命周期的能力,使代码更简洁、模块化,易于维护。常用Hooks如`useState`、`useEffect`等简化了状态管理和副作用操作。Hooks不仅增强了组件能力,提高了代码可读性和可维护性,还在各种应用场景中展现出强大功能,尤其是在中大型项目中优化了代码结构和提升了开发效率。总之,React Hooks为前端开发注入了新活力,推动了更高效便捷的开发实践。
26 1
|
2天前
|
缓存 前端开发 JavaScript
前端框架选择指南:React vs Vue vs Angular
React、Vue与Angular是主流前端框架,各有千秋。React专注视图层,学习曲线平缓,生态丰富,适用于中大型项目;Vue简洁易学,模板直观,内置状态管理,适合中小项目及快速原型;Angular全栈框架,结构严谨,适合大型企业应用。React需手动处理状态管理,Vue提供完整CLI加速开发,Angular虽学习曲线陡峭但提供全套解决方案。性能方面,三者均利用虚拟DOM优化渲染。社区支持上,React最为庞大,Vue活跃度高,Angular有Google背书。选型应基于项目需求、团队技能及维护考量。
10 0
|
7天前
|
Web App开发 前端开发 JavaScript
React——前端开发中模块与组件【四】
React——前端开发中模块与组件【四】
16 0
|
1月前
|
存储 前端开发 JavaScript
前端框架与库 - React基础:组件、Props、State
【7月更文挑战第12天】React是JavaScript库,专注UI构建,基于组件化。组件是UI模块,可函数式或类定义。Props是组件间安全传递数据的只读参数,用defaultProps和propTypes保证正确性。State则是组件内部可变数据,用于驱动更新。使用setState()确保正确变更和渲染。了解并妥善处理这些概念是高效React开发的基础。
|
1月前
|
前端开发 JavaScript 开发者
前端框架与库 - React生命周期与Hooks
【7月更文挑战第13天】React 框架革新UI构建,引入Hooks简化组件状态管理和副作用处理。组件生命周期涉及挂载、更新、卸载,对应不同方法,如`componentDidMount`、`shouldComponentUpdate`等,但现在推荐使用`useState`和`useEffect` Hooks。`useEffect`处理副作用,需注意清理和依赖数组。避免问题的关键在于正确使用Hooks和理解其工作模式,以构建高效应用。
|
1月前
|
前端开发
react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
23 1
|
1月前
|
前端开发 JavaScript 数据管理
前端框架对比:React、Vue与Angular
【7月更文挑战第2天】React、Vue和Angular是前端三大框架,各有特色。React以组件化和虚拟DOM著称,适合大型SPA;Vue轻量且易用,适用于快速开发;Angular是全面解决方案,适合复杂应用,但学习成本高。选择取决于项目需求和团队技能。
|
2月前
|
前端开发 JavaScript 开发者
探索现代前端框架:从React到Vue.js
【6月更文挑战第26天】在数字时代的浪潮中,前端框架如同建筑的基石,支撑着互联网界面的创新与发展。本文将带领读者穿梭于React与Vue.js这两个最受欢迎的前端框架之间,揭示它们的核心特性、设计理念以及在实际开发中的应用差异。通过比较分析,我们将理解每个框架的优势和局限,并探索如何根据项目需求作出明智的选择。加入我们,一起深入前端技术的瑰丽世界,发现构建未来网络界面的无限可能。