UNPKG

remix-utils-rt

Version:

This package contains simple utility functions to use with [React Router](https://reactrouter.com/home).

28 lines 1.05 kB
import { useCallback, useEffect, useRef } from "react"; import { useFetcher } from "react-router"; export function useDebounceFetcher() { let timeoutRef = useRef(); useEffect(() => { // no initialize step required since timeoutRef defaults undefined let timeout = timeoutRef.current; return () => { if (timeout) clearTimeout(timeout); }; }, []); let fetcher = useFetcher(); // Clone the original submit to avoid a recursive loop const originalSubmit = fetcher.submit; fetcher.submit = useCallback((target, { debounceTimeout = 0, ...options } = {}) => { if (timeoutRef.current) clearTimeout(timeoutRef.current); if (!debounceTimeout || debounceTimeout <= 0) { return originalSubmit(target, options); } timeoutRef.current = setTimeout(() => { originalSubmit(target, options); }, debounceTimeout); }, [originalSubmit]); return fetcher; } //# sourceMappingURL=use-debounce-fetcher.js.map