bug: useDebounce function is fixed

This commit is contained in:
Palash gupta 2022-02-10 22:00:35 +05:30
parent 9bf37b391e
commit 0d98a4fd0c
No known key found for this signature in database
GPG Key ID: 8FD05AE6F9150AD6

View File

@ -1,4 +1,4 @@
import { useCallback } from 'react'; import { useMemo, useRef } from 'react';
import debounce from 'lodash-es/debounce'; import debounce from 'lodash-es/debounce';
export interface DebouncedFunc<T extends (...args: any[]) => any> { export interface DebouncedFunc<T extends (...args: any[]) => any> {
@ -26,9 +26,13 @@ const useDebouncedFn = <T extends (...args: any) => any>(
options: DebounceOptions = defaultOptions, options: DebounceOptions = defaultOptions,
dependencies?: ReadonlyArray<any>, dependencies?: ReadonlyArray<any>,
): DebouncedFunc<T> => { ): DebouncedFunc<T> => {
const debounced = debounce(fn, wait, options); const fnRef = useRef(fn);
fnRef.current = fn;
return useCallback(debounced, dependencies || []); return useMemo(
() => debounce(((...args) => fnRef.current(...args)) as T, wait, options),
[...(dependencies || [])],
);
}; };
export default useDebouncedFn; export default useDebouncedFn;