import { useCallback, useEffect, useState } from 'react' import { debounce } from 'lodash' const useDebouncedValue = (value: T, debounceTime = 200) => { const [debouncedValue, setDebouncedValue] = useState(value) const debouncedSetValue = useCallback( debounce(val => setDebouncedValue(val), debounceTime), [] ) useEffect(() => { debouncedSetValue(value) }, [value]) return debouncedValue } export default useDebouncedValue