a tool for shared writing and social publishing
1import { useEffect, useState, useRef } from "react";
2
3export function useDebouncedEffect(
4 fn: () => void,
5 delay: number,
6 deps: React.DependencyList = [],
7): void {
8 useEffect(() => {
9 const handler = setTimeout(() => {
10 fn();
11 }, delay);
12
13 return () => {
14 clearTimeout(handler);
15 };
16 // eslint-disable-next-line react-hooks/exhaustive-deps
17 }, [...deps, delay]);
18}