cyb/src/hooks/useDebounce.tsx

import { useEffect, useRef } from 'react';

const useDebounce = () => {
  const timeout = useRef();

  const debounce =
    (func, wait) =>
    (...args) => {
      clearTimeout(timeout.current);
      timeout.current = setTimeout(() => func(...args), wait);
    };

  useEffect(() => {
    return () => {
      if (!timeout.current) return;
      clearTimeout(timeout.current);
    };
  }, []);

  return { debounce };
};

export default useDebounce;

Synonyms

pussy-ts/src/hooks/useDebounce.tsx

Neighbours