Vue3 实现验证码倒计时功能

下面是关于“Vue3 实现验证码倒计时功能”的完整攻略:

1. 创建 Vue3 项目

首先需要创建一个 Vue3 的项目,这里使用 Vue CLI 工具来创建:

vue create vue3-captcha

然后使用以下命令启动项目:

cd vue3-captcha
npm run serve

2. 编写倒计时组件

接下来,我们需要编写一个倒计时组件,用于实现验证码倒计时功能,该组件可以接收两个 prop,一个是倒计时的秒数,一个是倒计时结束后显示的文本:

<template>
  <div v-if="showCountdown">{{ countDown }}</div>
  <div v-else>{{ buttonText }}</div>
</template>

<script>
import { ref, watchEffect } from 'vue'

export default {
  props: {
    seconds: {
      type: Number,
      required: true
    },
    buttonText: {
      type: String,
      default: '发送验证码'
    }
  },
  setup(props) {
    const countDown = ref(props.seconds) // 倒计时秒数
    const showCountdown = ref(false) // 是否显示倒计时

    const sendCode = () => {
      // 发送验证码逻辑
      showCountdown.value = true // 显示倒计时
    }

    // 监听倒计时秒数变化
    watchEffect(() => {
      const timer = setInterval(() => {
        if (countDown.value <= 1) {
          clearInterval(timer)
          showCountdown.value = false // 隐藏倒计时
        } else {
          countDown.value -= 1
        }
      }, 1000)
      return () => clearInterval(timer)
    })

    return { countDown, showCountdown, sendCode }
  }
}
</script>

在上述代码中,我们使用 ref 来定义 countDownshowCountdown 变量,前者用于存储倒计时秒数,后者则用于判断是否显示倒计时。在 sendCode 函数中,我们可以编写发送验证码的逻辑代码。同时,使用 watchEffect 来监听倒计时秒数的变化,当倒计时结束后,会清除 setInterval 定时器并隐藏倒计时。

3. 使用倒计时组件

有了倒计时组件后,我们就可以在需要发送验证码的地方使用该组件了。下面是一个带有获取验证码按钮的示例:

<template>
  <div>
    <button @click="sendCode" :disabled="showCountdown">{{ buttonText }}</button>
    <countdown :seconds="60" buttonText="重新获取" ref="countdown" />
  </div>
</template>

<script>
import Countdown from './components/Countdown.vue'

export default {
  components: { Countdown },
  methods: {
    sendCode() {
      this.$refs.countdown.sendCode()
    }
  }
}
</script>

在上述代码中,我们引入了倒计时组件 Countdown,并将其注册为当前组件的局部组件。然后我们在模板中使用 Countdown 组件,并设置 ref 属性,这样就可以通过 $refs 来调用倒计时组件中的 sendCode 函数了。最后,通过 :disabled 为按钮设置禁用状态,并设置 buttonText重新获取

4. 绑定样式

为了美化获取验证码按钮和倒计时样式,我们还需要为它们绑定一些样式。下面是一个简单的示例:

<template>
  <div>
    <button @click="sendCode" :disabled="showCountdown" class="btn">{{ buttonText }}</button>
    <countdown :seconds="60" buttonText="重新获取" ref="countdown" class="countdown" />
  </div>
</template>

<style>
.btn {
  width: 80px;
  height: 32px;
  background-color: #1890ff;
  color: #fff;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

.countdown {
  padding: 5px;
  border-radius: 4px;
  border: 1px solid #e0e0e0;
  color: #666;
  font-size: 12px;
  text-align: center;
  width: 80px;
  height: 32px;
  line-height: 20px;
}
</style>

在上述代码中,我们为获取验证码按钮添加了一个 btn 类,并设置 background-color, color, border-radiuscursor 样式属性。同时,我们也为倒计时组件添加了一个 countdown 类,并设置了边框、背景色、圆角、字体大小等等属性。

5. 总结

至此,我们的验证码倒计时功能已经完成了。在上述过程中,我们创建了一个 Vue3 项目,并编写了一个倒计时组件,使其可以在验证码发送时实现倒计时功能。通过使用 refwatchEffect 监听变量变化,我们将组件分离为了两个阶段,这使得我们可以一边发送验证码一边显示倒计时。

另外,我们也为验证码获取按钮和倒计时组件绑定了样式,让其更美观整洁。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3 实现验证码倒计时功能 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 浅谈vue项目重构技术要点和总结

    浅谈Vue项目重构技术要点和总结 在Vue项目重构的过程中,需要注意以下几个技术要点: 1. 把公共功能封装成组件 在项目重构的过程中,需要尽量避免重复的代码。因此,我们可以把一些公共的功能封装成组件,供其他地方复用。例如,我们可以封装一个翻页组件,用于多处分页展示。如下所示: <template> <div> <button …

    Vue 2023年5月28日
    00
  • vue导出word纯前端的实现方式

    让我为您详细讲解一下“Vue导出Word纯前端的实现方式”的攻略。 1. 前置条件 在开始实现前,我们需要安装一些 npm 包和一些必备的工具,这些工具和包的详情如下: DocxTemplater:一个用于生成 docx 文档的工具 FileSaver.js:一个用于前端文件下载的 JS 库 Blob.js:一个 Blob 对象的 polyfill,用于处理…

    Vue 2023年5月27日
    00
  • Vue 实现从文件中获取文本信息的方法详解

    Vue 实现从文件中获取文本信息的方法详解 在Vue开发过程中,我们有时需要从文件中读取文本信息,并在Vue组件中展示或者做其他操作。本文将为您介绍一些Vue实现从文件中获取文本信息的方法,以供您参考和使用。 方法一:使用Ajax请求 可以使用jQuery或者Vue自带的axios库执行Ajax请求来从文件中获取文本信息。以下是一个使用Vue的axios库进…

    Vue 2023年5月28日
    00
  • Vue中函数防抖节流的理解及应用实现

    Vue中函数防抖节流的理解及应用实现 在Vue中,函数防抖(debounce)和函数节流(throttle)是常用的一些技巧。 函数防抖(Debounce) 基本概念 在前端开发中,有些事件会频繁地触发,如窗口大小的改变、搜索框的输入等等。如果我们在这类事件的回调函数中添加一些比较耗时的操作,就会影响页面的性能和用户体验。 函数防抖的原理是,在事件被触发n秒…

    Vue 2023年5月28日
    00
  • vue使用vue-video-player插件播放视频的步骤讲解

    好的!下面我将为你详细讲解如何使用vue-video-player插件在Vue项目中播放视频的步骤。 1. 安装vue-video-player插件 在终端输入以下命令安装vue-video-player插件: npm install vue-video-player –save 2. 引入vue-video-player组件 在Vue项目的main.js…

    Vue 2023年5月28日
    00
  • vue+iview如何实现拼音、首字母、汉字模糊搜索

    下面是“Vue+iview如何实现拼音、首字母、汉字模糊搜索”的攻略: 1. 实现拼音、首字母、汉字模糊搜索 1.1 安装中文分词工具 首先我们需要安装一个中文分词工具,这个工具可以将汉字分割成词语,方便后续的拼音搜索和首字母搜索。推荐使用js-pinyin工具,这是一个基于javascript实现的拼音转换工具,可以将汉字转换成拼音。 npm instal…

    Vue 2023年5月27日
    00
  • Vue过滤器filters的用法及时间戳转换问题

    让我来详细讲解一下“Vue过滤器filters的用法及时间戳转换问题”的完整攻略。 什么是Vue过滤器filters? Vue过滤器filters是一种在模板中使用的文本格式化工具,用于将数据转换成所需的格式,比如将文本全部转换为大写、将数字按照指定的小数位数四舍五入等等。Vue过滤器通常被放在Mustache插值的后面,由管道符号(|)连接,如下: {{ …

    Vue 2023年5月28日
    00
  • Vue自动构建发布脚本的方法示例

    下面我详细讲解一下“Vue自动构建发布脚本的方法示例”的完整攻略。 1. 确定需求 在实现自动构建发布脚本之前,我们需要先确定具体的需求,以便确定脚本的功能和实现方案。一般来说,自动构建发布脚本的主要功能包括: 构建前的准备工作,如环境依赖检查、代码检查等; 代码的自动构建和打包; 代码的自动部署和发布。 2. 创建脚本 第二步是开始创建脚本。Vue自动构建…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部