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与django集成打包的实现方法

    实现 Vue 和 Django 的集成打包,需要以下步骤: 1. 创建 Vue 应用程序 首先,我们需要创建一个 Vue 应用程序。在使用 Vue CLI 创建应用程序后,确保在命令行中运行npm run build 命令来打包应用程序。 $ vue create my-vue-app $ cd my-vue-app $ npm install $ npm …

    Vue 2023年5月28日
    00
  • vue 如何添加全局函数或全局变量以及单页面的title设置总结

    根据您的需求,我会详细讲解“Vue 如何添加全局函数或全局变量以及单页面的 title 设置总结”的完整攻略,包含两个示例用于进一步说明。 一、Vue 如何添加全局函数或全局变量 在 Vue 中,我们可以方便地在全局使用自定义函数和变量,这样可以简化业务逻辑,提高开发效率。以下是实现此功能的方法: 1.1 添加全局函数 在 Vue 中添加全局函数的方式是通过…

    Vue 2023年5月28日
    00
  • Vue实现添加数据到二维数组并显示

    针对“Vue实现添加数据到二维数组并显示”的问题,我可以提供以下完整攻略: 步骤一:创建Vue实例 首先,我们需要创建Vue实例并定义数据。这里我提供一个简单的示例: <div id="app"> <button @click="addData">添加数据</button> <…

    Vue 2023年5月28日
    00
  • 解决vue中的无限循环问题

    当在Vue中使用嵌套组件时,我们可能会遇到无限循环的问题。本篇攻略旨在解决Vue中无限循环的问题。 问题描述 Vue的数据驱动使组件随着数据而渲染。因此,每个组件必须有唯一的标识符,否则无法跟踪和区分不同的组件,从而引起无限循环的问题。 解决方案 解决Vue中的无限循环问题分以下几个步骤: 步骤一:给组件添加唯一标识符 在子组件中添加一个名为“key”的属性…

    Vue 2023年5月28日
    00
  • vue3+ts+EsLint+Prettier规范代码的方法实现

    首先我们需要安装Vue CLI来创建一个Vue项目。假设您已经安装好了Node.js和Vue CLI。 通过以下命令创建一个新的Vue项目: vue create vue3-ts-eslint-prettier 在安装依赖的过程中,我们可以选择手工安装lfork ESLint、Prettier和TypeScript。这里选择手工安装便于我们更好地控制整个项目…

    Vue 2023年5月28日
    00
  • 详解如何运行vue项目

    下面是详解如何运行 Vue 项目的完整攻略。 环境准备 在运行 Vue 项目之前,我们需要先准备好开发环境,主要包括以下三个部分: Node.js Vue 项目需要 Node.js 环境支持,请先安装 Node.js,安装方法可以参考Node.js官方网站。 Vue CLI Vue CLI 是 Vue.js 官方提供的脚手架工具,用于初始化和快速搭建 Vue…

    Vue 2023年5月28日
    00
  • 解决vue-cli + webpack 新建项目出错的问题

    当使用vue-cli + webpack搭建新项目时,会出现各种错误。下面是解决这些问题的完整攻略: 1. 确认安装node.js和npm 首先需要确认您的系统上是否安装了node.js和npm。node.js是运行JavaScript代码的平台,npm是Node.js的包管理器。如果您没有安装,请前往https://nodejs.org/en/downlo…

    Vue 2023年5月28日
    00
  • 使用命令行工具npm新创建一个vue项目的方法

    创建Vue项目的步骤如下: 安装Node.js和npm 首先需要在电脑上安装Node.js和npm(Node.js包管理工具)。Node.js是运行于服务器端的JavaScript解释器,而npm是随同Node.js一起安装的包管理器,用于管理Node.js模块和软件包。 使用命令行工具创建一个文件夹,用于存储Vue项目文件 在命令行工具(如Git Bash…

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