当前位置: 首页 > news >正文

网站服务器租用还是自买拼多多seo搜索优化

网站服务器租用还是自买,拼多多seo搜索优化,建设网站建站,网站原型图软件背景 在开发过程中,经常需要使用到倒计时的场景,当用户点击后,按钮进行倒计时,然后等待邮件或者短信发送,每次都写重复代码,会让代码显得臃肿,所以封装一个组件来减少耦合 创建一个倒计时组件…

背景

在开发过程中,经常需要使用到倒计时的场景,当用户点击后,按钮进行倒计时,然后等待邮件或者短信发送,每次都写重复代码,会让代码显得臃肿,所以封装一个组件来减少耦合

创建一个倒计时组件

在这里插入图片描述

编辑基本框架

设计3个参数,一个是倒计时时长,一个是开始时执行的方法,一个是展示文本

import React, { useState, useEffect, useRef } from 'react';
import { Button } from 'antd';// 定义 CountdownButton 的属性接口
interface CountdownButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {countdownTime?: number;text?: string;onStart?: () => void;
}const CountdownButton: React.FC<CountdownButtonProps> = ({ countdownTime = 60, text = '获取验证码', onStart, ...restProps }) => {const [isDisabled, setIsDisabled] = useState(false);const [buttonText, setButtonText] = useState(text);// 使用useRef来保存倒计时的当前值,避免状态重置const countdownRef = useRef(countdownTime);const intervalRef = useRef<number | null>(null);return (<Button >{buttonText}</Button>);
};export default CountdownButton;

实现倒计时方法

实现剩余时间修改方法

    // 使用自定义的setCountdownRef函数来更新倒计时值const setCountdownRef = (update: (current: number) => number) => {const newCountdown = update(countdownRef.current);countdownRef.current = newCountdown;};

实现开启倒计时方法

   const handleStartCountdown = () => {// 立即更新按钮文本和状态setButtonText(`${countdownRef.current}s后重试`);setIsDisabled(true);if (typeof onStart === 'function') {onStart();}// 如果已经有定时器存在,则清除它if (intervalRef.current !== null) {clearInterval(intervalRef.current!);}intervalRef.current = setInterval(() => {setButtonText(`${countdownRef.current}s后重试`);setCountdownRef((prevCountdown) => {if (prevCountdown <= 1) {clearInterval(intervalRef.current!);intervalRef.current = null;setButtonText(text);setIsDisabled(false);return countdownTime; // 重置倒计时时间}return prevCountdown - 1;});}, 1000);

实现清楚定时器方法

    // 清除定时器useEffect(() => {return () => {if (intervalRef.current !== null) {clearInterval(intervalRef.current!);}};}, []);

完整代码

import React, { useState, useEffect, useRef } from 'react';
import { Button } from 'antd';// 定义 CountdownButton 的属性接口
interface CountdownButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {countdownTime?: number;text?: string;onStart?: () => void;
}const CountdownButton: React.FC<CountdownButtonProps> = ({ countdownTime = 60, text = '获取验证码', onStart, ...restProps }) => {const [isDisabled, setIsDisabled] = useState(false);const [buttonText, setButtonText] = useState(text);// 使用useRef来保存倒计时的当前值,避免状态重置const countdownRef = useRef(countdownTime);const intervalRef = useRef<number | null>(null);// 清除定时器useEffect(() => {return () => {if (intervalRef.current !== null) {clearInterval(intervalRef.current!);}};}, []);const handleStartCountdown = () => {// 立即更新按钮文本和状态setButtonText(`${countdownRef.current}s后重试`);setIsDisabled(true);if (typeof onStart === 'function') {onStart();}// 如果已经有定时器存在,则清除它if (intervalRef.current !== null) {clearInterval(intervalRef.current!);}intervalRef.current = setInterval(() => {setButtonText(`${countdownRef.current}s后重试`);setCountdownRef((prevCountdown) => {if (prevCountdown <= 1) {clearInterval(intervalRef.current!);intervalRef.current = null;setButtonText(text);setIsDisabled(false);return countdownTime; // 重置倒计时时间}return prevCountdown - 1;});}, 1000);// 立即减少一次倒计时,使首次显示正确的剩余时间setCountdownRef((prevCountdown) => prevCountdown - 1);};// 使用自定义的setCountdownRef函数来更新倒计时值const setCountdownRef = (update: (current: number) => number) => {const newCountdown = update(countdownRef.current);countdownRef.current = newCountdown;};return (<Button {...restProps} onClick={handleStartCountdown} disabled={isDisabled}>{buttonText}</Button>);
};export default CountdownButton;

使用方法

<CountdownButton countdownTime={60} text={"获取验证码"} onStart={sendMsg} type="primary" />

效果

在这里插入图片描述

http://www.yayakq.cn/news/351866/

相关文章:

  • 软件工程课程设计课程网站建设wordpress 页面 关闭评论
  • 网站建设与维护合同范本wordpress短网址插件
  • 哪些网站用天平做logo巨野网站建设
  • 企业网站 flashseo短视频网页入口营销
  • 建设网站花都软件开发培训学校
  • 温州网站开发网站的制作图片外链
  • 合适的网站制作需要多少钱国内知名网站
  • 网站建设与运营的课程总结糯米团网站怎么做
  • python策略网站怎么做app页面制作
  • 南京市建设局网站中文网站建设解决方案
  • 廊坊市做网站的公司有哪些阿里巴巴吧网站怎么做
  • 建设一个网站用什么软件下载大良营销网站建设价位
  • 网站建设名片设计泰安网络电视
  • 网站出现乱码潜江网络
  • 旅游网站建设建议上海seo优化外包公司
  • 长沙哪家制作网站好江苏 建设 招标有限公司网站
  • 温州做网站优化网站建设总体需求分析
  • 网站怎么在工信部备案信息查询wordpress发布网站
  • 建设部网站信息系统滕州做网站哪家好
  • 渭南做网站价格龙岩网站建设馨烨
  • 廉溪区建设局网站网络工程师可能自学吗
  • 南京微信网站开发网站建设与管理课程代码
  • 网站建设如何导入音乐自己做的网站 怎么在网上销售
  • 招远做网站价格wordpress自媒体主题
  • 郑州网站推广效果想做个网站
  • 重庆互联网网站建设WordPress与阿里云对象存储
  • 流量比对网站长沙百度关键词优化
  • 网站建设制作价格低分类信息网站建设前就应该进行网站推广工作
  • 小型企业网站建设报告模拟组建过程深圳出名网站建设公司
  • 互联网门户网站模板网站模板制作步骤