首页 > 其他分享 >【React】实现一个基本的防抖函数

【React】实现一个基本的防抖函数

时间:2024-05-31 19:54:46浏览次数:19  
标签:防抖 const 函数 number timer React lat lng

函数防抖(debounce),就是指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重新计算函数延执行时间(在这里和函数节流区分一下,函数节流是在触发完事件之后的一段时间之内不能再次触发事件)。 实现:

 1    const timer=useRef<any>(null)//react中可用方法之一是是用ref创建timer
 2   //创建防抖函数
 3    const useDebounce = (fun: Function, delay: number) => {
 4           return (lat: number, lng: number) => {
 5               if (timer.current) {
 6                   clearTimeout(timer.current);
 7               }
 8               timer.current = setTimeout(() => {
 9                  fun(lat, lng);
10                  console.log(timer.current);
11                  timer.current = null
12              }, delay);
13          }
14      }
15  //创建触发函数
16      const handleChangeMarkers = useDebounce((lat: number, lng: number) => {
17          const newMarkers = markers?.map((marker: any, index: number) => {
18              if (index + 1 == currentPoint) {
19                  const newPosition = marker.getPosition()
20                  newPosition.lat = lat
21                  newPosition.lng = lng
22                  marker.setPosition(newPosition)
23              }
24              return marker
25          })
26          setChangeMarkers(newMarkers)
27      }, 500)
28 
29 handleChangeMarkers(113.625309,34.746277)

 

 

标签:防抖,const,函数,number,timer,React,lat,lng
From: https://www.cnblogs.com/Esai-Z/p/18225202

相关文章

  • golang函数使用基础
    函数介绍有其他语言基础的话就没啥介绍的,基本语法:funcfunctionName(形参列别)(返回值列表){执行语句return返回值列表}例子:funcgetSum(n1int,n2int)int{varresint=n1+n2 returnres}包实际就创建不同的文件夹,存放程序文件。Go的每一个文......
  • 立即执行函数IFEE
    //立即执行函数IIFE//声明functionname(a,b){returna+b;}//调用console.log(name(1,2));//立即执行将声明与执行二合一,一步到位//函数声明外部使用一个圆括号括住,使之转为表达式(function(a,b){console.log(a+b);......
  • 箭头函数
    //匿名函数letsum=function(a,b){returna+b;}//只有匿名函数才可以使用胖箭头简化//=>胖箭头sum=(a,b)=>{returna+b;};console.log(sum(1,2));//另外,如果参数大于一个,那么参数的圆括号不能省,直接干脆就别省最后的结......
  • JavaScript执行(三):你知道现在有多少种函数吗?
    在前一篇文章中,我们大致了解了执行上下文是什么,也知道了任何语句的执行都会依赖特定的上下文。一旦上下文被切换,整个语句的效果可能都会发生改变。那么,切换上下文的时机就显得非常重要了。在JavaScript,切换上下文最主要的场景是函数调用。在这一课,我们就来讲讲函数调用切换......
  • 关于一道高斯函数题目
    令\(\lfloorx\rfloor\)为不大于\(x\)的最大整数。\(\{x\}=x-\lfloorx\rfloor\)。题目1题面求值:\[\sum\limits_{i=1}^{2015}\left\{\frac{2015i}{2016}\right\}\]标准答案\[\begin{aligned}&\left\{\frac{2015i}{2016}\right\}\\......
  • Shell阶段07 退出循环指令(示例:分发主机公钥), 函数应用(参数传参)
    退出循环的语句#1.exit退出循环,退出脚本#2.break结束当前循环,或者跳出本地循环,继续执行循环外面的命令#3.continue忽略本次循环剩余的代码,直接执行下一次循环#4.案例先扫描内网网段的所有主机,存活的主机进行发放本机的公钥1.本机是否要有公钥,创建密钥对rm2.......
  • 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注
    为什么会突然想到写这么一个大杂烩的博文呢,必须要从笔者几年前的一次面试说起当时的我年轻气盛,在简历上放了自己的博客地址,而面试官应该是翻了我的博客,好几道面试题都是围绕着我的博文来提问其中一个问题,直接使得空气静止了五分钟,然后面试官结束了这次面试,那就是:如何手写一个简......
  • 函数的参数与返回值
    //必选参数letsum=function(a,b){returna+b;}console.log(sum());//可选参数sum=function(a=1,b=2){returna+b;}console.log(sum());现在计算五个参数相加//常规方法sum=function(a,b,c,d,e){......
  • 机器学习python实践中对于决策函数(decision_function)的一些个人思考
    最近在利用python进行实践训练,但是跟着参考书学习到SVM的时候,示例代码里突然出现了一个函数——decision_function(),让我很懵逼,帮助文档里的英文翻译过来说啥决策函数、ovr、ovo之类的,让我整个人更晕了,因为我在理论部分参考的是周志华老师的《西瓜书》,而《西瓜书》中并没有对这......
  • 损失函数和评价指标
    在深度学习和机器学习中,损失函数和评价指标是两个密切相关但具有明显不同目的的概念。了解它们的区别对于设计和训练模型非常重要。以下是它们的主要区别和各自的作用:损失函数(LossFunction)损失函数,也称为代价函数或误差函数,是一个在模型训练过程中使用的函数,用于量化模型预......