Skip to content

Instantly share code, notes, and snippets.

@andycarrell
Created August 7, 2019 23:51
Show Gist options
  • Save andycarrell/687de18b3a2ec202253e757c5d3bbec2 to your computer and use it in GitHub Desktop.
Save andycarrell/687de18b3a2ec202253e757c5d3bbec2 to your computer and use it in GitHub Desktop.
import { useEffect, useState } from "react";
function useDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
}, [value, delay]);
return debouncedValue;
};
function useDebouncedState(initialState, interval) {
const [value, setValue] = useState(initialState);
const debouncedValue = useDebounce(value, interval);
return [value, setValue, debouncedValue];
}
function useDebouncedEffect(value, interval, effect) {
const debouncedValue = useDebounce(value, interval);
useEffect(() => effect(debouncedValue), [debouncedValue, effect]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment