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

React ahooks——副作用类hooks之useThrottleEffect

useThrottleEffect 是 ahooks 提供的节流版 useEffect,它在依赖项变化时执行副作用函数,但会限制执行频率。

一、基本语法

useThrottleEffect(effect: React.EffectCallback,deps?: React.DependencyList,options?: Options
)

二、参数详解

2.1. effect (必需)

副作用函数,与 useEffect 的第一个参数相同,可以返回一个清理函数。

2.2 deps (可选)

依赖数组,与 useEffect 的第二个参数相同。当数组中的值发生变化时,会触发节流判断。

2.3. options (可选)

配置对象,包含以下属性:

属性名类型默认值描述
waitnumber1000节流等待时间,单位毫秒
leadingbooleantrue是否在节流开始前立即执行
trailingbooleantrue是否在节流结束后执行
maxWaitnumber-最大等待时间,保证至少每隔这个时间执行一次

三、使用示例

3.1 基础用法

import { useThrottleEffect } from 'ahooks';
import { useState } from 'react';function SearchComponent() {const [keyword, setKeyword] = useState('');useThrottleEffect(() => {// 这里执行搜索API调用或其他副作用console.log('搜索关键词:', keyword);// mock API call// fetch(`/api/search?q=${keyword}`).then(...);},[keyword], // 依赖项{ wait: 500 } // 500ms内只执行一次);return (<inputvalue={keyword}onChange={(e) => setKeyword(e.target.value)}placeholder="输入搜索内容..."/>);
}

3.2 高级配置示例

useThrottleEffect(() => {console.log('高级节流效果:', value);// 执行一些计算量大的操作},[value],{wait: 300,leading: false, // 不立即执行第一次trailing: true, // 最后一次变化后执行maxWait: 2000   // 确保至少每2秒执行一次}
);

3.3 与清理函数结合示例

useThrottleEffect(() => {const timer = setTimeout(() => {console.log('延迟执行的操作');}, 100);return () => {clearTimeout(timer); // 清理函数};},[dependency],{ wait: 500 }
);
http://www.lryc.cn/news/608103.html

相关文章:

  • 超平面(Hyperplane)是什么?
  • 深入 Go 底层原理(十四):timer 的实现与高性能定时器
  • 卡尔曼滤波轨迹跟踪算法与MATLAB实现
  • 关于Web前端安全防御XSS攻防的几点考虑
  • 【软考中级网络工程师】知识点之 VRRP
  • 智能学号抽取系统V5.6.4重磅发布
  • 【Docker】RK3576-Debian上使用Docker安装Ubuntu22.04+ROS2
  • 28Rsync免密传输与定时备份
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第9章 性能调优
  • leetcode热题——组合
  • Android性能优化--16K对齐深入解析及适配指南
  • 【数据结构初阶】--排序(二)--直接选择排序,堆排序
  • AI Agent开发学习系列 - LangGraph(10): 带有循环的Looping Graph(练习解答)
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • 【昇腾推理PaddleOCR】生产级部署方式
  • 什么是AWS Region和AWS Availability Zones
  • php完整处理word中表单数据的方法
  • Word怎样转换为PDF
  • 使用AWS免费EC2自建RustDesk远程桌面连接服务
  • 【iOS】3GShare仿写
  • 市政污水厂变频器联网改造方案-profibus转ethernet ip网关(通俗版)
  • 疏老师-python训练营-Day33 MLP神经网络的训练
  • 详解Python标准库之命令行界面库
  • 【05】OpenCV C#——OpenCvSharp 图像基本操作---转灰度图、边缘提取、兴趣区域ROI,图像叠加
  • MyBatisPlus之CRUD接口(IService与BaseMapper)
  • 西门子 G120 变频器全解析:从认知到参数设置
  • 技巧|SwanLab记录ROC曲线攻略
  • LINUX82 shell脚本变量分类;系统变量;变量赋值;四则运算;shell
  • 系统性学习数据结构-第一讲-算法复杂度
  • MySQL 内置函数