当前位置:首页 > 科技  > 软件

JavaScript:简单理解防抖和节流,如何定义防抖和节流函数

来源: 责编: 时间:2023-12-18 09:47:23 352观看
导读防抖防抖函数,就是防止抖动,避免事件重复触发。比如监听输入框的输入,不应该在用户每输入一个字符就触发监听,而是在用户输入结束后再来监听。流程为:1、事件触发;2、开启定时器;3、当事件再次触发的时候,就会清除上个定时器,

防抖

防抖函数,就是防止抖动,避免事件重复触发。比如监听输入框的输入,不应该在用户每输入一个字符就触发监听,而是在用户输入结束后再来监听。osG28资讯网——每日最新资讯28at.com

流程为:1、事件触发;2、开启定时器;3、当事件再次触发的时候,就会清除上个定时器,然后重新开启新的定时器;4、时间到了以后,就开始处理事件操作。osG28资讯网——每日最新资讯28at.com

现在有一个输入框,代码如下:osG28资讯网——每日最新资讯28at.com

import React from "react";const Child2 = () => {  return <input onChange={({ target: { value } }) => {    console.log(value)  }} />};

效果如下图:osG28资讯网——每日最新资讯28at.com

图片图片osG28资讯网——每日最新资讯28at.com

每输入一个字符,就触发监听事件。如果是搜索查询的话,那就不合适了。osG28资讯网——每日最新资讯28at.com

现在在监听事件上设置防抖:osG28资讯网——每日最新资讯28at.com

import React from "react";const Child2 = () => {  const inputChange = debounce(({ target: { value } }) => {    console.log(value)  })  return <input onChange={inputChange} />};function debounce(fn) {  let timeout = null;  return function () {    clearTimeout(timeout);    timeout = setTimeout(() => {      fn.apply(this, arguments);    }, 1000);  };}

如果在定时器时间内,事件再次触发,那么就清空之前的定时器,然后重新开启新的定时器。osG28资讯网——每日最新资讯28at.com

效果图:osG28资讯网——每日最新资讯28at.com

图片图片osG28资讯网——每日最新资讯28at.com

这就是防抖。osG28资讯网——每日最新资讯28at.com

节流

节流就是控制事件触发的频率。比如按钮点击,在短时间内多次点击,那么只需要触发一次即可。osG28资讯网——每日最新资讯28at.com

比如:osG28资讯网——每日最新资讯28at.com

import React from "react";const Child2 = () => {  return <button onClick={() => {    console.log("点击")  }}>点击</button>};

连续点击多次,效果如下图,如果是涉及到网络请求的话,那么得不偿失了。osG28资讯网——每日最新资讯28at.com

图片图片osG28资讯网——每日最新资讯28at.com

现在定义一下节流函数:osG28资讯网——每日最新资讯28at.com

// 节流function throttle(fn) {  let timeout = null;  return function () {    if (timeout) return;    timeout = setTimeout(() => {      fn.apply(this, arguments);      timeout = null;    }, 1000);  }}

完整代码:osG28资讯网——每日最新资讯28at.com

import React from "react";const Child2 = () => {  const click = throttle(() => {    console.log("点击")  })  return <button onClick={click}>点击</button>};// 节流function throttle(fn) {  let timeout = null;  return function () {    if (timeout) return;    timeout = setTimeout(() => {      fn.apply(this, arguments);      timeout = null;    }, 1000);  }}

在一秒内连续点击多次,最后只有一次有效。图片osG28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-48365-0.htmlJavaScript:简单理解防抖和节流,如何定义防抖和节流函数

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 图解系统设计之Instagram

下一篇: 14个工具,让 DevOps 和 SRE 遥遥领先!

标签:
  • 热门焦点
  • 小米官宣:2023年上半年出货量中国第一!

    今日早间,小米电视官方微博带来消息,称2023年小米电视上半年出货量达到了中国第一,同时还表示小米电视的巨屏风暴即将开始。“公布一个好消息2023年#小米电视上半年出货量中国
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为&ldquo;纯欲天花板&rdquo;的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元&ldquo;人在职场,应该选择什么样的着装?&rdquo;近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • OPPO K11样张首曝:千元机影像“卷”得真不错!

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
Top