@flatbiz/antd
Version:
90 lines (87 loc) • 3.03 kB
TypeScript
import { HTMLAttributes } from 'react';
/**
* 短信倒计时组件的属性接口
*
* @extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick'> - 继承 div 元素的所有 HTML 属性,但排除 onClick(组件内部处理点击事件)
*/
export interface SmsCountDownProps extends Omit<HTMLAttributes<HTMLDivElement>, "onClick"> {
/**
* 验证码发送请求函数
* @returns Promise<void> - 返回 Promise,成功时开始倒计时,失败时恢复初始状态
* @description 当用户点击发送按钮时调用此函数,函数执行成功后会自动开始倒计时
*/
onSendRequest: () => Promise<void>;
/**
* 倒计时总时长(单位:秒)
* @default 60
* @description 从开始倒计时到结束的总秒数,例如 60 表示倒计时 60 秒
*/
totalTicks?: number;
/**
* 倒计时更新间隔(单位:毫秒)
* @default 1000
* @description 倒计时数值更新的频率,1000 表示每秒更新一次
*/
duration?: number;
/**
* 是否自动开始倒计时
* @default false
* @description
* - true: 组件挂载后自动开始倒计时(不会调用 onSendRequest)
* - false: 需要用户点击才会触发发送和倒计时
* @note 自动开始时不会调用 onSendRequest,仅用于显示倒计时状态
*/
autoStart?: boolean;
/**
* 倒计时文本格式化模板
* @default '{t}s'
* @description 使用 {t} 作为占位符,会被替换为剩余秒数
* @example '{t}s' => '60s', '{t}秒后重试' => '60秒后重试'
*/
format?: string;
/**
* 初始状态文案(未发送时显示)
* @default '获取验证码'
* @description 组件初始状态或倒计时结束后显示的文本
*/
sendTxt?: string;
/**
* 倒计时完成后的文案
* @default '重新获取'
* @description 倒计时结束后显示的文本,提示用户可以重新发送
*/
sentTxt?: string;
/**
* 发送中状态文案
* @default '发送中...'
* @description 点击发送按钮后,等待 onSendRequest 执行完成期间显示的文本
*/
processingTxt?: string;
/**
* 倒计时数值变化时的回调函数
* @param time - 当前剩余的秒数
* @description 每次倒计时更新时都会调用此函数,可用于外部监听倒计时状态
*/
onTick?: (time: number) => void;
}
/**
* 短信倒计时组件的 Ref API 接口
*
* @description 通过 ref 可以访问组件内部的方法,用于外部程序化控制组件行为
*/
export type SmsCountDownRefApi = {
/**
* 手动触发发送验证码
* @description 调用此方法会触发 onSendRequest 并开始倒计时,等同于用户点击组件
*/
onStart: () => void;
};
/**
* 短信验证码倒计时组件
*
* @param props - 组件属性
* @param ref - 组件引用,用于访问内部方法
* @returns JSX.Element - 返回可点击的倒计时显示元素
*/
export declare const SmsCountDown: import("react").ForwardRefExoticComponent<SmsCountDownProps & import("react").RefAttributes<SmsCountDownRefApi>>;
export {};