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

react 封装防抖

封装防抖

import React, { useRef, useEffect, useCallback } from 'react';function useDebounce(fn, delay) {const delayRef = useRef(delay);const fnRef = useRef(fn);// 更新ref值useEffect(() => {delayRef.current = delay;}, [delay]);useEffect(() => {fnRef.current = fn;}, [fn]);const debounced = useRef();// 防抖函数const debounce = useCallback((...args) => {const later = () => {debounced.current = null;};clearTimeout(debounced.current);debounced.current = setTimeout(() => {fnRef.current(...args);later();}, delayRef.current);}, []);useEffect(() => () => {clearTimeout(debounced.current);},[]);return debounce;
}export default useDebounce;

使用方法

import React, { useState } from 'react';
import useDebounce from './useDebounce';const MyComponent = () => { // 创建防抖函数const debouncedHandleChange = useDebounce(() => {console.log('防抖触发了');}, 500);return (<inputtype="text"value={value}onChange={(e) => {debouncedHandleChange(e);}}/>);
};export default MyComponent;

注:本人前端小白 ,如有不对的地方还请多多指教

http://www.lryc.cn/news/457964.html

相关文章:

  • Java项目-----图形验证码登陆实现
  • 【网络代理模块】反向代理(上)
  • 2-112基于matlab的协同干扰功率分配模型
  • 数据结构之——二叉树
  • 多层感知机(MLP)实现考勤预测二分类任务(sklearn)
  • 文件与目录的基本操作
  • Python入门笔记(三)
  • PostgreSQL 任意命令执行漏洞(CVE-2019-9193)
  • 使用tgz包下载安装clickhouse低版本
  • 外包功能测试干了6个月,技术退步太明显了。。。。。
  • 动态规划和贪心算法
  • python爬虫--tx动漫完整信息抓取
  • 《使用Java做爬虫和使用python做爬虫哪个好》
  • 如果我想开发一个APP,需要准备哪些材料呢
  • 告别论文初稿焦虑!ChatGPT让你轻松完成写作!
  • mongodb 数据迁移,亲测成功!
  • 如何使用ssm实现疫情居家办公OA系统
  • 深入了解 MySQL 中的 JSON_CONTAINS
  • 宝藏推荐:精选十款知识库搭建软件
  • go语言接口设计三国人物
  • day-63 优质数对的总数 II
  • 基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)
  • C++ | Leetcode C++题解之第461题汉明距离
  • ElasticSearch备考 -- Update by query Reindex
  • 从认识String类,到走进String类的世界
  • Vue入门-指令修饰符-@keyup.enter
  • 【Kubernetes】常见面试题汇总(五十九)
  • 【ARM Linux驱动开发】嵌入式ARM Linux驱动开发基本步骤
  • SpinalHDL之设计错误(Design Errors)(一)
  • QT + opengl 让2d贴图动起来