You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Debounce is called multiple times if you use a non-memoized function, like an inline arrow function or something you'd typically put into a useCallback (so not passing a setState or similar directly).
Using a custom arrow function like you'd use in useCallback or something similar is not uncommon nor unresonable. Many other libraries show better examples (than passing a useState directly) and use something like this as an example e.g. https://mantine.dev/hooks/use-debounced-callback/
So the issues are many fold:
a stronger example is needed, as we can see useState is basically cheating
improve tests as critical test cases are missed
fix bug (it is not a useCallback variant hook without this fix)
To Reproduce
constTest=()=>{const[value,setValue]=useState<string>('')const[,setDebouncedValue]=useState('')constdebounce=useDebounceCallback((val: string)=>{console.log('debounced',val)if(value)setDebouncedValue(val)},1500)return(<inputvalue={value}onChange={({target: { value }})=>{setValue(value)debounce(value)}}/>)}
Expected behavior
debounced functions should be called once
Right now that console will print the following if "123" is typed
debounced 1
debounced 12
debounced 123
Additional context
No response
The text was updated successfully, but these errors were encountered:
I don't mean to be bitter or rude and can def appreciate the contributions to this library, but given such a critical/misdocumented issue with this hook and seeing other debounce hook related issues I think I'll step away from using this library for now.
FWIW this library has one of my fav set of functions but if they don't work reliably, it's hard to confidently rely on them
Describe the bug
Debounce is called multiple times if you use a non-memoized function, like an inline arrow function or something you'd typically put into a
useCallback
(so not passing asetState
or similar directly).Using a custom arrow function like you'd use in
useCallback
or something similar is not uncommon nor unresonable. Many other libraries show better examples (than passing auseState
directly) and use something like this as an example e.g. https://mantine.dev/hooks/use-debounced-callback/So the issues are many fold:
useState
is basically cheatinguseCallback
variant hook without this fix)To Reproduce
Expected behavior
debounced functions should be called once
Right now that console will print the following if "123" is typed
Additional context
No response
The text was updated successfully, but these errors were encountered: