当前位置: 首页 > news >正文

Vue3+ElementPlus倒计时示例

  • 按钮文字默认显示“开始倒计时”
  • 当点击按钮时,显示正在倒计时(倒计时数字)
  • 倒计时结束按钮显示“开始倒计时”

倒计时逻辑 Hooks 函数

hooks/useCountDown.js

/*** hooks函数:函数是用于封装和复用组件逻辑的一种机制* 定义:Hooks 是一种在不使用类组件的情况下复用状态逻辑的方法* 目的:将组件中的逻辑抽取出来,形成可复用的函数* 特点:遵循 Composition API 的思想,使逻辑组织更加灵活* 命名规范:通常以 use 开头命名 Hook 函数,如 useCounter、useFetch 等*/
import {ref, watch} from "vue";// 封装并导出倒计时函数
export function useCountDown(num = 60) {// 倒计时剩余秒数const count = ref(num);// 是否倒计时中const isDown = ref(false);// 定时器的 id 编号let timerId = null;// 开始倒计时函数const start = () => {if (isDown.value) return; //当前正在倒计时中,则返回isDown.value = true;      //设置 isDown 值,表示正在倒计时中timerId = setInterval(() => {count.value--;}, 1000);}// 使用 watch 监听 count 值,当 count 值变为 0 时,停止计时器watch(count, (newCount) => {if (newCount <= 0) {clearInterval(timerId); //清除计时器count.value = num;      //重置 count 值isDown.value = false;   //重置 isDown 值}})return {count,isDown,start}
}

页面按钮

xxx/index.vue

<template><el-button type="primary" @click="countDownFn"><span v-if="isDown">正在倒计时({{ count }})</span><span v-else>开始倒计时</span></el-button>
</template><script setup>
// 导入 hooks 函数
import { useCountDown } from "@/hooks"
// 调用 useCountDown 函数,得到 count计数, isDown是否开始, start 函数
const { count, isDown, start } = useCountDown(10)// 倒计时
const countDownFn = () => {start()
}
</script><style lang="scss" scoped>
</style>
http://www.dtcms.com/a/347055.html

相关文章:

  • 入校申请|基于SprinBoot+vue的入校申报审批系统(源码+数据库+文档)
  • [激光原理与应用-332]:结构设计 - Solidworks - 特征(Feature)是构成三维模型的基本单元,是设计意图的载体,也是参数化设计的核心。
  • LeetCode 面试经典 150_数组/字符串_找出字符串中第一个匹配项的下标(23_28_C++_简单)(KMP 算法)
  • 「ECG信号处理——(24)基于ECG和EEG信号的多模态融合疲劳分析」2025年8月23日
  • 构建真正自动化知识工作的AI代理
  • 日志搜索系统前端页面(暂无后端功能)
  • 【leetcode】92. 反转链表2
  • k8s总结
  • Sentinel相关记录
  • 语义通信高斯信道仿真代码
  • uniapp对接一键登录
  • 【数据结构】布隆过滤器的概率模型详解及其 C 代码实现
  • uniapp 页面跳转及字符串转义
  • uniApp对接实人认证
  • uniapp mixins的使用
  • Java接口响应速度优化
  • Python SystemVerilog (Python SV)
  • mysql没有mvcc之前遇到了什么问题
  • CSS变量
  • k8sday15
  • 【typenum】 24 去除尾部零的特性(private.rs片段)
  • [激光原理与应用-320]:结构设计 - Solidworks - 软件工具UI组织的核心概念
  • 【软件设计模式】策略模式
  • 【MongoDB与MySQL对比】
  • 【React ✨】从零搭建 React 项目:脚手架与工程化实战(2025 版)
  • SpringBoot applicationContext.getBeansOfType获取某一接口所有实现类,应用于策略模式
  • Claude Code快捷键介绍(Claude Code命令、Claude Code指令、Claude Code /命令、Claude命令、Claude指令)
  • GEO优化供应商:AI搜索时代的“答案”构建与移山科技的引领,2025高性价比实战指南
  • LeetCode Hot 100 第二天
  • GaussDB 数据库架构师修炼(十八) SQL引擎-计划管理-SQL PATCH