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

React 自定义hook 之 防抖和节流

一、简介

        防抖和节流主要用于控制事件触发频率,提高页面性能和用户体验。

        防抖: 当事件被触发后,在一定时间内有新的对应事件,则会取消老的事件执行。

        节流: 当事件触发后,在一定时间内会忽略新的事件执行。

二、技术实现

1、useDebounce hook

export const useDebounce = (state, delay) => {const [debounceState, setDebounceState] = useState({...state});useEffect(() => {const timeout =  setTimeout(() => {setDebounceParam({...param,});}, delay);return () => clearTimeout(timeout);}, [state]);}

使用样例:

export UserComponent = ()=>{const [userName, setUserName] = useState("");const [user, setUser] = useState({});const debounceUserName = useDebounce(userName, 300);useEffect(() => {User user = getUserByUserName(userName);setUser(...user);}, [debounceUserName]);return (<div>用户名:<input type = 'text' value = {userName} onChange = {setUserName}/>用户信息: <span>{user.info}</span><div/>    );
}

2.useThrottle hook

export const useThrottle = (state, limit) =>{const [throttleState, setThrottleState] = useState(...state);// 记录下上次触发的时间const [lastTrigger, setLastTrigger] = useState(Date.now());useEffect(() => {const timeout = setTimeOut(() =>{if (Date.now() - lastTrigger < dealy){return;}setThrottleState(throttleState);setLastTrigger(now);});return clearTimeout(timeout);}, [state])
}

相关文章:

React 自定义hook 之 防抖和节流

一、简介 防抖和节流主要用于控制事件触发频率&#xff0c;提高页面性能和用户体验。 防抖: 当事件被触发后&#xff0c;在一定时间内有新的对应事件&#xff0c;则会取消老的事件执行。 节流: 当事件触发后&#xff0c;在一定时间内会忽略新的事件执行。 二、技术实现 1、us…...

CVE-2022-21661

简介 CVE-2022-21661是一个与WordPress相关的漏洞&#xff0c;涉及到SQL注入问题。该漏洞主要源于WordPress的WQ_Tax_Query类中的clean_query函数&#xff0c;可能允许攻击者通过控制传递给该函数的数据来控制生成的SQL查询&#xff0c;从而执行任意的SQL代码。 当WordPress的…...

【Python】tensorboard实时查看模型训练过程的方法示例

本文对tensorboard实时查看模型训练过程的方法进行实例详解&#xff0c;以帮助大家理解和使用。 步骤1&#xff1a;查看训练过程保存的文件中是否有这个文件&#xff0c;红框内的。 步骤2&#xff1a;如果有&#xff0c;则打开终端&#xff0c;激活安装过tensorboard的环境。…...

Golang基础-面向对象篇

文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中&#xff0c;可以使用type 关键字来创建自定义类型&#xff0c;这对于提高代码的可读性和可维护…...

全国的科技创新情况数据分享,涵盖2020-2022年三年情况

随着国家对科技创新的重视和大力支持&#xff0c;全国的科技创新情况越来越受到关注。 我们根据中国城市统计年鉴的这方面指标&#xff0c;分析汇总得出全国科技创新情况数据&#xff0c;需要说明的是&#xff0c;由于统计年鉴指标调整&#xff0c;每一年的数据并非字段相同&a…...

visionOS空间计算实战开发教程Day 1:环境安装和编写第一个程序

安装 截至目前visionOS还未在Xcode稳定版中开放&#xff0c;所以需要下载​​Xcode Beta版​​。比如我们可以下载Xcode 15.1 beta 2&#xff0c;注意Xcode 15要求系统的版本是macOS Ventura 13.5或更新&#xff0c;也就是说2017年的MacBook Pro基本可以勉强一战&#xff0c;基…...

java常见数值类型取值范围/ int short long BigInteger取值范围

文章目录 一、各类型取值范围 一、各类型取值范围 以下整理java中常用的数值类型取值范围。 类型字节大小最小值最大值取值范围byte8bit-128127-128到127short16bit-2 15 ^{15} 152 15 ^{15} 15-1-32768-32767int32bit-2 31 ^{31} 312 31 ^{31} 31 -1-2,147,483,648 到 2,147…...

echarts产品日常奇怪需求

设置最小刻度导致好多小数&#xff0c;限制两位 yAxis 指定的y轴设置 axisLabel&#xff0c;可以格式化显示 文档地址&#xff1a;https://echarts.apache.org/zh/option.html#yAxis.axisLabel.formatter yAxis: [{type: value,name: 利率,position: right,alignTicks: true,mi…...

CSDN文章保存为MD文档(一)

免责声明 文章仅做经验分享用途&#xff0c;利用本文章所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&#xff01;&#xff01;&#xff01; import os import re i…...

【tomcat】java.lang.Exception: Socket bind failed: [730048

项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ&#xfffd;&#xfffd; 13, 2023 9:33:26 &#xfffd;&#xfffd;&#xfffd;&#xfffd; org.apache.coyote.AbstractProtocol init &#xfffd;&#xfffd;&#xfffd;&#xfffd;: Fa…...

什么是高防IP?有什么优势?怎么选择高防IP?

在当今的互联网环境中&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击已经成为一种常见的安全威胁。这种攻击通过向目标服务器发送大量的无效流量&#xff0c;使其无法处理正常的请求&#xff0c;从而达到迫使服务中断的目的。作为一个用户&#xff0c;你是否曾遇…...

不存在类型变量 A, T 的实例,使 Collector<T, A, List<T>> 符合 Supplier<R>

报错信息 原因: 不存在类型变量 A, T 的实例&#xff0c;使 Collector<T, A, List<\T>> 符合 Supplier<\R> 来源 测试Stream流的map方法&#xff0c;做算法习惯基本类型定义数组。 map方法:Stream API的一部分。允许以一种声明式的方式处理数据&#xff0c…...

千兆光模块和万兆光模块的供应链管理

随着网络通信技术的不断发展&#xff0c;千兆光模块和万兆光模块已逐渐成为现代网络建设中不可缺少的组成部分。它们在云计算、数据中心、大规模机房以及企业内部网络等领域广泛应用&#xff0c;已经成为大家熟知的产品。 千兆光模块和万兆光模块的工作原理基本相同&#xff…...

pytorch训练出现的bug

训练过后发现.csv文件左侧出现了几列unname和一列0&#xff0c;1&#xff0c;2。这个时候在训练就会从unname那一列开始训练。我们需要把这几列删除&#xff0c;之后再重新训练 问题应该是执行完了这个语句过后就会出现了。 执行完后&#xff0c;记得删。...

【AGC】集成AGC服务上架应用市场审核问题

【关键字】 AGC、应用市场、审核 【问题描述】 集成了AGC服务&#xff0c;上架到应用市场不通过&#xff0c;检查发现是com.huawei.secure.android.common.ssl.util.c.doInBackground 存在获取安装列表行为。 已经按照sdk 设置了&#xff0c;但是检测还是有授权前去获取安装列…...

element emitter broadcast向下广播 dispatch向上分派

emitter 项目使用element的emitter.js&#xff0c;做个使用记录 function broadcast(componentName, eventName, params) {this.$children.forEach(child > {const name child.$options.name;if (name componentName) {child.$emit.apply(child, [eventName].concat(para…...

基于 Modbus 的工业数据采集、控制(part 2)

基本处理流程 服务器 parse_and_process(char * input)//input :post请求发送的正文 {...// 请求 modbus 数据else if(strstr(input, "modbus_get")){return handle_get(sock, input);}// 控制 modbus 设备else if(strstr(input, "modbus_set")){return …...

vue前端项目如何配置后端项目的请求地址

在 Vue 前端项目中配置后端项目的访问地址可以通过修改项目的配置文件来实现。Vue 常用的配置文件是 vue.config.js&#xff0c;你可以按照以下步骤进行配置&#xff1a; 在 Vue 项目的根目录下&#xff0c;创建或编辑 vue.config.js 文件。 在 vue.config.js 中&#xff0c;可…...

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 LoRa联盟 LoRa联盟&#xff1a;LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书&#xff1a;https://www.lora-alli…...

Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复

一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…...

告别手动描边!用X-AnyLabeling和SAM模型,10分钟搞定YOLOv8-seg数据集标注

10倍效率革命&#xff1a;X-AnyLabelingSAMYOLOv8-seg智能标注全流程实战 标注效率是计算机视觉项目的第一道门槛。当面对500张工业零件图像需要标注时&#xff0c;传统手动描边可能需要消耗一个工程师整整三天的工作量——而现在&#xff0c;这个时间可以被压缩到3小时以内。这…...

5分钟上手:OAuth2客户端动态注册审批完整工作流 | Ory Hydra实战指南

5分钟上手&#xff1a;OAuth2客户端动态注册审批完整工作流 | Ory Hydra实战指南 【免费下载链接】hydra Internet-scale OpenID Certified™ OpenID Connect and OAuth2.1 provider that integrates with your user management through headless APIs. Solve OIDC/OAuth2 user…...

FreeMove:3分钟学会Windows文件智能迁移,彻底告别C盘爆满烦恼

FreeMove&#xff1a;3分钟学会Windows文件智能迁移&#xff0c;彻底告别C盘爆满烦恼 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 还在为C盘爆红而焦虑吗&#xff…...

蓝桥杯省赛真题解析:用线段树+优先队列搞定‘小蓝的旅行计划’(附Java完整代码)

蓝桥杯省赛算法精解&#xff1a;线段树与优先队列在旅行加油问题中的协同应用 第一次看到"小蓝的旅行计划"这道题时&#xff0c;很多选手会被题目中复杂的加油规则和油箱限制条件弄得晕头转向。这道来自蓝桥杯省赛的真题&#xff0c;表面上看是一个简单的贪心问题&am…...

魔兽争霸3终极优化指南:5分钟解决所有兼容性问题

魔兽争霸3终极优化指南&#xff1a;5分钟解决所有兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争霸3》在现代电脑上…...

ccswitch-terminal:一键切换终端上下文,提升开发效率的自动化利器

1. 项目概述与核心价值最近在折腾一些自动化脚本和工具链&#xff0c;发现一个挺有意思的场景&#xff1a;当你在终端里切换不同的工作环境时&#xff0c;比如从Python虚拟环境切换到Node.js项目&#xff0c;或者从本地开发环境切换到容器内部&#xff0c;经常需要手动执行一系…...

全国首部“数据流通交易合规”标准,现公开征集起草单位和专家!

2026年&#xff0c;是国家数据局明确的“数据要素价值释放年”&#xff0c;也是“数据要素”三年行动计划的收官之年。在政策强力驱动下&#xff0c;数据资产价值释放进程全面提速&#xff0c;一个千亿级规模的市场正迎来关键跃升。然而&#xff0c;面对这片广阔蓝海&#xff0…...

终极指南:如何在不破坏系统的情况下迁移C盘大文件到其他分区

终极指南&#xff1a;如何在不破坏系统的情况下迁移C盘大文件到其他分区 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 你是否曾为C盘空间不足而烦恼&#xff1f;每次…...

运维必看:如何用Java Oshi监控Linux服务器性能并接入Prometheus+Grafana

Java Oshi与PrometheusGrafana构建Linux服务器监控体系实战 在云原生时代&#xff0c;服务器性能监控已成为运维工程师的日常必修课。想象这样一个场景&#xff1a;凌晨三点&#xff0c;服务器CPU突然飙升至95%&#xff0c;而你的手机开始被告警短信轰炸。此时如果能快速定位是…...

2026年AI论文写作辅助工具排名榜单(最近更新)

结合综合性能、学术场景适配、用户口碑、功能完整性四大核心维度&#xff0c;2026年主流AI论文写作工具综合排名正式发布&#xff0c;按推荐指数从高到低排序&#xff0c;明确各工具优势与适用场景。第一梯队&#xff1a;全流程学术解决方案&#xff08;★★★★★&#xff09;…...