Skip to content

CodeVerify 验证码倒计时

iPhone

此组件实际发送验证码的场景,可能是一个按钮,也可能是一段文字,提示语各有不同,所以本组件不提供界面显示,只提供倒计时文本,由用户将文本嵌入到具体的场景。

平台差异说明

APPH5微信小程序支付宝小程序QQ小程序···
适配中

代码示例

部分功能示例,具体可参考示例程序以及文档API。

基础用法

通过 ref 获取组件实例,再执行后面的操作,示例:

  1. 通过 seconds 属性设置需要倒计时的秒数(默认 60 秒)
  2. 通过 ref 调用组件内部的方法 start 方法调用发送事件,或者通过 send 回调函数来处理发送事件
  3. 通过 ref 调用组件内部的方法 startTimer 方法开始倒计时
  4. 通过监听 change 事件(从开始到结束之间,每秒触发一次)获得提示的文字内容,可以自定义
html
<template>
    <fu-code-verify
        ref="codeVerifyRef"
        :seconds="seconds"
        @send="handleSend"
        @end="handleEnd"
        @change="handleChange"
    ></fu-code-verify>
</template>

<script setup>
    import { ref } from 'vue';
    
    // data数据
    const codeVerifyRef = ref();
    const seconds = 25;
    
    // methods方法
    const handleSend = () => {
        // 模拟向后端请求验证码
        setTimeout(() => {
            uni.$fu.toast('验证码发送成功')
            // 通知验证码组件内部开始倒计时
            codeVerifyRef.value.startTimer()
        }, 500)
    };

    const handleEnd = () => {
        uni.$fu.toast('倒计时结束')
    };
    
    const handleChange = (e) => {
        console.log('倒计时: ', e);
    };
</script>

设置提示语

组件内部有内置的提示语,如发送前的提示语为 获取验证码,用户可以通过参数配置自定义的提示语:

  • 发送前,属性为 startText,默认值为 获取验证码
  • 发送中, 属性为 sendText,默认值为 请稍候...
  • 倒计时中,属性为 changeText,默认值为 X秒重新获取
  • 倒计时结束,属性为 endText,默认值为 重新获取

设置保持倒计时

一般情况下,再H5刷新浏览器时,或者各端返回再次进入时,倒计时会消失,导致用户可以再次尝试获取验证码,虽然后端还会对此进一步的判断。

对于这种情况下,fusions-ui提供了一个 keepRunning 属性(默认 false),为 true 的时候,即时刷新浏览器,或者返回上一个页面,倒计时依然会继续(倒计时未结束的话)

注意:如果您的一个页面或者多个页面同时使用了多个此组件,为防止多个组件之间,保存在本地的多个继续倒计时的变量之间互相干扰,可以设置各个组件的 uniqueKey 属性,来区分各个组件的变量。

html
<template>
    <!-- A.vue -->
    <fu-code-verify uniqueKey="pageA"></fu-code-verify>

    <!-- B.vue -->
    <fu-code-verify uniqueKey="pageB"></fu-code-verify>

API

CodeVerify Props

属性名说明类型默认值可选值
seconds倒计时所需秒数Number60-
startText发送前的提示语,详见上方设置提示语String获取验证码-
sendText发送中时的提示语,详见上方设置提示语String请稍候...-
changeText倒计时中时的提示语,详见上方设置提示语StringX秒重新获取-
endText倒计时结束时的提示语,详见上方设置提示语String重新获取-
width按钮宽度String|Number--
height按钮高度String|Number--
color按钮字体颜色String--
size按钮字体大小String|Number14-
bgColor按钮背景颜色Stringtransparent-
borderColor按钮边框颜色Stringtransparent-
radius按钮圆角String|Number0-
isOpacity是否透明Booleantruefalse
successVal短信发送成功(改变数值且数值大于0表示发送成功,多次发送数值递增即可)Number0-
keepRunning是否保持倒计时,详见上方设置保持倒计时Booleanfalsetrue
uniqueKey组件唯一标识,用于区分多个组件的变量String--
startState是否默认倒计时状态Booleanfalsetrue
customStyle定义需要用到的外部样式String|Object--

CodeVerify Methods

方法名说明
startTimer开始倒计时
reset结束当前正在进行中的倒计时,设置组件可以重新获取验证码的状态

CodeVerify Events

事件名说明回调参数
send点击按钮触发() => void
start开始倒计时触发() => void
end倒计时结束触发() => void
change倒计时中触发() => void

CodeVerify Slot

名称说明
default自定义显示内容