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

怎么到百度做网站网站备案证书打印

怎么到百度做网站,网站备案证书打印,网站后台php开发教程,教育类网站如何做项目中遇到了点击按钮重复提交的问题,防止重复点击首先是想到的是给点击事件一个定时,下次触发的条件是要距离上一次点击的时间大于N秒的之后才能再执行。 // 防重复点击函数 export const preventRepeatPress {lastPressTi1me: 0, // 上次点击时间…

项目中遇到了点击按钮重复提交的问题,防止重复点击首先是想到的是给点击事件一个定时,下次触发的条件是要距离上一次点击的时间大于N秒的之后才能再执行。

// 防重复点击函数
export const preventRepeatPress = {lastPressTi1me: 0,  	//  上次点击时间      repoTime: 2000,   		//  默认间隔时间2000  onPress(callback: () => void, waitTime: number = 2000) {let currTime = Date.now();if (currTime - this.lastPressTime > this.repoTime) {this.lastPressTime = currTime;this.repoTime = waitTime;         callback && callback();}},
};

在组件上的点击函数onPress中使用preventRepeatPress方法

<Button title="点击按钮" onPress={() => preventRepeatPress.onPress(() => fun())} /> 

在点击的时候可以传入设置间隔时间进行单独控制

() => preventRepeatPress.onPress(() => onCredit(),5000)

第二使用 setTimeout 函数

需要注意的是 timeout 需要放在全局也就是函数外部,否则的话每次调用 timeout 都会重新初始化导致防抖函数失去效果。

定义一个名为 debouncePlus 的函数,它接受一个函数 func,一个等待时间 wait(默认为 1000 毫秒)和一个 immediate 参数

// 定义一个变量 timeout,用于存储定时器的标识,变量作用域需要在函数外部
let timeout: string | number | NodeJS.Timeout | null | undefined = null;export const debouncePlus = (func: { apply: (arg0: any, arg1: IArguments) => void; },wait: number | undefined = 1000,immediate: any
) => {// 变量 result,用于存储函数执行的结果let result: any;// 定义一个内部函数 debounced,它将作为防抖后的函数被返回let debounced = function (this: any) {// 获取当前函数执行的上下文(this 指向)let context = this;// 获取传递给当前函数的参数let args = arguments;// 如果定时器已经存在,清除之前的定时器if (timeout) clearTimeout(timeout);// 如果 immediate 为真if (immediate) {// 如果 timeout 为 null,说明是第一次调用,应该立即执行函数let callNow = !timeout;// 设置一个新的定时器,在等待时间之后将 timeout 置为 nulltimeout = setTimeout(function () {timeout = null;}, wait);// 如果应该立即执行,则调用原始函数,并将结果存储在 result 中if (callNow) result = func.apply(context, args);}// 如果 immediate 为假else {// 设置一个新的定时器,在等待时间之后执行原始函数timeout = setTimeout(function () {func.apply(context, args);}, wait);}// 返回函数执行的结果(如果是 immediate 模式,可能是立即执行的结果;否则可能是 null)return result;};// 给 debounced 函数添加一个 cancel 方法,用于取消正在等待执行的定时器debounced.cancel = function () {clearTimeout(timeout);timeout = null;};// 返回防抖后的函数return debounced;
};

第三使用 hook

/*** 防抖hook*   const { run } = useDebounceFn(() => {setValue(value + 1)},{wait: 500,},);*/
import { useEffect, useMemo, useRef } from 'react';
import { debouncePlus } from './debounce-plus';const isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';
const isFunction = (value: unknown): value is (...args: any) => any => typeof value === 'function';interface DebounceOptions {wait?: number;leading?: boolean;trailing?: boolean;maxWait?: number;
}type noop = (...args: any[]) => any;function useDebounceFn<T extends noop>(fn: T, options?: DebounceOptions) {if (isDev) {if (!isFunction(fn)) {console.error(`useDebounceFn expected parameter is a function, got ${typeof fn}`);}}const fnRef = useLatest(fn);const wait = options?.wait ?? 1000;const debounced = useMemo(() =>debouncePlus((...args: Parameters<T>): ReturnType<T> => {return fnRef.current(...args);},wait,options,),[],);useUnmount(() => {debounced.cancel();});return {run: debounced,cancel: debounced.cancel,// flush: debounced.flush,};
}export default useDebounceFn;export const useUnmount = (fn: () => void) => {if (isDev) {if (!isFunction(fn)) {console.error(`useUnmount expected parameter is a function, got ${typeof fn}`);}}const fnRef = useLatest(fn);useEffect(() => () => {fnRef.current();},[],);
};export function useLatest<T>(value: T) {const ref = useRef(value);ref.current = value;return ref;
}

有好的思路欢迎评论交流

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

相关文章:

  • 勒流网站制作wordpress plugin development
  • 注册了域名怎么做网站wordpress主题极简cho
  • 青岛品牌网站制作最火的营销方式
  • 产品做网站推广index of wordpress
  • 做网站起名字建站网址大全
  • 网站发布之后上传文件路径变了深圳市住房和建设局工程交易
  • 自己做网站赚流量钱合肥建设监理协会网站
  • 东莞龙岗网站建设制作音乐排行榜网页设计
  • 锛网站网站云服务器租用
  • 怎么进行网站诊断互联网公司手机网站
  • 洱源网站建设网站建设属于什么科别
  • 有关网站建设的公众号网络营销的特点是
  • 重庆专业的网站建设公司哪家好上海营销网站推广多
  • 哪里做网站最好目前网站开发语言
  • PHP网站开发涉及的工具有哪些邢台信息港二手房出售
  • 酒业网站模板下载改图在线处理图片
  • 长沙专业个人做网站哪家好网站建设完成以后应该怎样备份
  • 北京网站建设升上去工具型网站有哪些
  • 企业网站建设的三种方式好的手机端网站模板下载安装
  • 私人定制网站网站搭建心得体会
  • 湖南电子科技网站建设如何免费建立可以交流的网站
  • 深圳哪家制作网站好网站品牌形象设计怎么做
  • phpcms 下载网站模板互联网技术专业
  • 网站策划预算怎么做wordpress好慢
  • 正规的网站制作服务商深圳个人网站设计
  • 需要前置审批的网站网站出现弹窗
  • 餐饮门户网站源码discuz网站ip
  • 企业备案做电影网站的后果闵行网站建设哪家好
  • 怎么做淘宝客网站江西港航建设投资有限公司网站
  • 仿百度文库网站源码商业版dedecms(梦织)系统内核工业贸易企业 营销型网站