短信验证码倒计时 (直接复制即可使用) vue3

ops/2025/1/16 2:54:22/

需求:

要实现一个获取验证码的需求,点击获取验证码60秒内不可以重复点击,方式有两种可以直接复制使用;

效果图

在这里插入图片描述

实现方案

方案1 (单个文件内使用比较推荐)

<el-button :disabled="codeDisabled" @click.stop="handleSendCode"><span>{{ codeDisabled ? `重新发送 ${countdown}` : '获取验证码' }} </span>
</el-button>// 是否禁用按钮
const codeDisabled = ref(false)
// 倒计时秒数
const countdown = ref(60)// 点击获取验证码
const handleSendCode = () => {codeDisabled.value = trueconst interval = setInterval(() => {countdown.value -= 1;if (countdown.value <= 0) {clearInterval(interval)codeDisabled.value = false}}, 1000)
}

方案2 (自定义hook 多个文件使用推荐)

  1. 首先,创建一个新的文件,例如 useCountdown.ts

// useCountdown.ts
import { ref } from 'vue';export function useCountdown(initialTime = 5) {const codeDisabled = ref(false);const countdown = ref(initialTime);const startCountdown = () => {codeDisabled.value = true;countdown.value = initialTime;const interval = setInterval(() => {countdown.value -= 1;if (countdown.value <= 0) {clearInterval(interval);codeDisabled.value = false;}}, 1000);};return {codeDisabled,countdown,startCountdown};
}
  1. 组件中使用这个自定义组合函数
<template><el-button :disabled="codeDisabled" @click.stop="handleSendCode"><span>{{ codeDisabled ? `重新发送 ${countdown}` : '获取验证码' }}</span></el-button>
</template>
// 导入
import { useCountdown } from './useCountdown';
// 解构
const { codeDisabled, countdown, startCountdown } = useCountdown(5);// 按钮点击事件
const handleSendCode = () => {startCountdown();};

http://www.ppmy.cn/ops/111383.html

相关文章

Python 调用手机摄像头

Python 调用手机摄像头 在手机上安装软件 这里以安卓手机作为演示&#xff0c;ISO也是差不多的 软件下载地址 注意&#xff1a;要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 ) 安装完打开IP摄像头服务器 点击分享查看IP 查看局域网的I…

macOS上谷歌浏览器的十大隐藏功能

谷歌浏览器&#xff08;Google Chrome&#xff09;在macOS上拥有一系列强大而隐蔽的特性&#xff0c;这些功能能显著提高您的浏览体验。从多设备同步到提升安全性和效率&#xff0c;这些被低估的功能等待着被发掘。我们将逐步探索这些功能&#xff0c;帮助您最大化利用谷歌浏览…

ubuntu24.04 lts 更新后无法登录, 更新前待机无法恢复.

cdsn 不让输入,没办法,只好先留个空白. sudo apt-get install laptop-mode-tools sudo laptop_mode start cat /proc/sys/vm/laptop_mode ----------------------------------------------------------------------------------------------------------------- /et…

[使用Zep云存储优化AI助手的记忆功能,提升效率!]

使用Zep云存储优化AI助手的记忆功能&#xff0c;提升效率&#xff01; 在构建AI助手应用程序时&#xff0c;让AI能够回忆过去的对话内容可以显著提高用户体验。Zep提供了一种长期记忆服务&#xff0c;使AI助手能够记住即便是遥远的谈话内容。这篇文章将介绍如何使用Zep来减少幻…

Mac OS14外接显示器字体过小和放大字体模糊问题的简单解决

文章目录 问题简述解决方法 问题简述 使用Mac mini外接2K 显示器时&#xff0c;默认分辨率是25601440&#xff0c;字体较小&#xff0c;如果切换成19201080&#xff0c;字体又变大模糊。 解决方法 使用HiDP I&#xff08;一种显示技术&#xff0c;使用多个物理像素显示1个像…

动手学深度学习(pytorch)学习记录27-深度卷积神经网络(AlexNet)[学习记录]

目录 创建模型读取数据集训练AlexNet AlexNet 是由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 在 2012 年提出的深度卷积神经网络&#xff0c;它在当年的 ImageNet 大规模视觉识别挑战赛&#xff08;ILSVRC&#xff09;中取得了显著的成绩&#xff0c;从而引起了深度…

医院核酸检测服务系统开发+Springboot论文源码调试讲解

第2章 开发环境与技术 医院核酸检测服务系统的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对医院核酸检测服务系统用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&…

3.3k star开源的Notepad++文本编辑器替代品,跨平台

1 简介 notepad作者在软件readme中有不当言论&#xff0c;之前公司就让强制卸载掉了&#xff0c;对于习惯了实用notepad的属实不方便&#xff0c;前段时间有一篇推荐notepad next的&#xff0c;使用起来也不错&#xff0c;今天推荐一款新的替代品&#xff0c;notepad–。 采用…