File tree 1 file changed +21
-4
lines changed
packages/utils/hooks/useDebounce
1 file changed +21
-4
lines changed Original file line number Diff line number Diff line change 1
1
'use client'
2
2
3
- import { useEffect , useRef } from 'react'
3
+ import { useEffect , useState , useRef } from 'react'
4
4
5
5
import debounce from 'lodash/debounce'
6
6
7
- const useDebounce = < T extends ( params : any ) => any > (
8
- functionToDebounce : T ,
7
+ const useDebounce = < T extends any [ ] , U > (
8
+ functionToDebounce : ( ... params : T ) => U ,
9
9
{ debounceTime = 400 } = { } ,
10
10
) => {
11
11
const debouncedFuncRef = useRef ( debounce ( functionToDebounce , debounceTime , { trailing : true } ) )
@@ -20,4 +20,21 @@ const useDebounce = <T extends (params: any) => any>(
20
20
return { debouncedFunction : debouncedFuncRef . current }
21
21
}
22
22
23
- export default useDebounce
23
+ const useDebouncedValue = < T > ( value : T , debounceTime : number ) => {
24
+ const [ debouncedValue , setDebouncedValue ] = useState ( value )
25
+
26
+ useEffect ( ( ) => {
27
+ const handler = setTimeout ( ( ) => {
28
+ setDebouncedValue ( value )
29
+ } , debounceTime )
30
+
31
+ return ( ) => {
32
+ clearTimeout ( handler )
33
+ }
34
+ } , [ value , debounceTime ] )
35
+
36
+ return debouncedValue
37
+ }
38
+
39
+
40
+ export { useDebounce as default , useDebouncedValue }
You can’t perform that action at this time.
0 commit comments