mirror of https://github.com/portainer/portainer
22 lines
534 B
TypeScript
22 lines
534 B
TypeScript
import _ from 'lodash';
|
|
import { useState, useRef, useCallback } from 'react';
|
|
|
|
export function useDebounce(
|
|
defaultValue: string,
|
|
onChange: (value: string) => void
|
|
) {
|
|
const [searchValue, setSearchValue] = useState(defaultValue);
|
|
|
|
const onChangeDebounces = useRef(_.debounce(onChange, 300));
|
|
|
|
const handleChange = useCallback(
|
|
(value: string) => {
|
|
setSearchValue(value);
|
|
onChangeDebounces.current(value);
|
|
},
|
|
[onChangeDebounces, setSearchValue]
|
|
);
|
|
|
|
return [searchValue, handleChange] as const;
|
|
}
|