react 封装防抖

简介: 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 (
{
debouncedHandleChange(e);
}}
/>
);
};

相关文章
|
3月前
|
前端开发 JavaScript 网络架构
react对antd中Select组件二次封装
本文介绍了如何在React中对Ant Design(antd)的Select组件进行二次封装,包括创建MSelect组件、定义默认属性、渲染Select组件,并展示了如何使用Less进行样式定义和如何在项目中使用封装后的Select组件。
120 2
react对antd中Select组件二次封装
|
3月前
|
前端开发
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
本文介绍了在React项目中如何添加路径别名alias以简化模块引入路径,设置组件props的默认值,以及如何二次封装Ant Design的Modal组件。文章还提供了具体的代码示例,包括配置Webpack的alias、设置defaultProps以及封装Modal组件的步骤和方法。
86 1
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
|
3月前
封装react-antd-table组件参数以及方法如rowSelection、pageNum、pageSize、分页方法等等
文章介绍了如何封装React-Antd的Table组件,包括参数和方法,如行选择(rowSelection)、页码(pageNum)、页面大小(pageSize)、分页方法等,以简化在不同表格组件中的重复代码。
77 0
|
6月前
|
前端开发 API
|
5月前
|
前端开发
Vue3 【仿 react 的 hook】封装 useTitle
Vue3 【仿 react 的 hook】封装 useTitle
60 0
|
5月前
|
前端开发 API
Vue3 【仿 react 的 hook】封装 useLocation
Vue3 【仿 react 的 hook】封装 useLocation
45 0
|
7月前
|
SQL 存储 前端开发
React&Nest.js全栈社区平台(五)——👋封装通用分页Service实现文章流与详情
React&Nest.js全栈社区平台(五)——👋封装通用分页Service实现文章流与详情
React&Nest.js全栈社区平台(五)——👋封装通用分页Service实现文章流与详情
|
7月前
|
前端开发 UED
React 窗口防抖:提升网页性能的利器
React 窗口防抖:提升网页性能的利器
106 0
|
7月前
|
前端开发 UED
React 防抖与节流用法
React 防抖与节流用法
203 0
|
JavaScript 前端开发
前端学习笔记202306学习笔记第五十四天-react.js & material-ui之编辑表单 封装form组件10
前端学习笔记202306学习笔记第五十四天-react.js & material-ui之编辑表单 封装form组件10
50 0