vue3发送验证码用vant组件实现

本文介绍了如何在Vue3项目中利用Vant组件实现发送验证码功能,包括安装Vant库,配置main.js文件引入,以及在具体页面中使用相关组件,最后展示了实现效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步

安装vant

pnpm add vant

第二步

main.js引入

//引入ui組件庫vant
import Vant  from 'vant'
//vant桌面適配
import '@vant/touch-emulator';

import 'vant/lib/index.css';

app.use(Vant)

第三部

需要使用的页面

 <div class="my-phone">
          <van-dropdown-menu >
            <van-dropdown-item v-model="form.phone_area_code" :options="option"/>
          </van-dropdown-menu>
          <van-field
              v-model="form.phone"
              class="phone"
              name="用户名"
              type="tel"
              required
              :placeholder="'*'+$t('login.phone')"
              autofocus
              :rules="[{ required: true, message: $t('login.phoneMessage') }]"
          />
        </div>
        <van-field
            v-model="form.verify_code"
            center
            clearable
            required
            :placeholder="'*'+$t('register.verify_code_message')"
            :rules="[{ required: true, message: $t('register.verify_code_message') }]"
        >
          <template #button>
            <van-button size="small" type="primary" class="verify_code" @click="sendSms" :disabled="sendStatus">
              <van-count-down :time="30 * 1000" format="ss" v-show="sendStatus" ref="countDown"  @finish="onFinish">
                <template #default="timeDate">
                  <span class="block">{{timeDate.seconds}}s</span>
                </template>
              </van-count-down>
              {{sendStatus ? '' : $t('register.verify_code')}}
            </van-button>
          </template>
        </van-field>

<script setup>
import {reactive, ref} from "vue";

const countDown = ref(null)//发送消息倒计时组件
const onFinish = () => sendStatus.value = false //解除发送验证码禁用状态

/**
 * 发送验证码
 */
const sendSms = useThrottleFn(() => {//防抖函数
  sendSmsApi({ phone:form.phone, phone_area_code: form.phone_area_code }).then(res => {
    if(res.status === 200) {
      Notify({type: 'success', message: i18n.global.t('register.send_sms')})
      sendStatus.value = true
      countDown.value.reset()
    }
  })
},1000)
</script>

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光下,遗忘黑暗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值