export const debounce=(cb:Function,delay:number)=> {
let timer:any
return (...args:any[])=> {
clearTimeout(timer);
timer = setTimeout(()=>cb(...args),delay);
}
}
const [searchText, setSearchText] = React.useState("");
const [error, setError] = React.useState("");
const [filterResults, setFilterResults] = React.useState([]);
const handleFilter = async (searchText: string) => {
const res = await filterByName(searchText);
if (res.error) {
setError(res.error);
} else {
setFilterResults(res.results);
}
}
const debouncedSearchText = useCallback(debounce((value: string) => handleFilter(value), 300), [])
useEffect(() => {
setError("")
if (searchText.length > 2 || !searchText) {
debouncedSearchText(searchText);
}
}, [searchText]);
export const useDebounce = (dbValue: string, delay: number) => {
const [value, setValue] = React.useState(dbValue);
useEffect(() => {
let timer = setTimeout(() => {
setValue(dbValue)
}, delay);
return () => {
clearTimeout(timer)
};
}, [dbValue])
return value
}
const [searchText, setSearchText] = React.useState("");
const [error, setError] = React.useState("");
const [filterResults, setFilterResults] = React.useState([]);
const debouncedText = useDebounce(searchText,300)
const handleFilter = async (searchText: string) => {
const res = await filterByName(searchText);
if (res.error) {
setError(res.error);
} else {
setFilterResults(res.results);
}
}
useEffect(() => {
handleFilter(debouncedText);
}, [debouncedText]);
const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
const [inputValue, setInputValue] = useState('');
const debouncedValue = useDebounce(inputValue, 300);
useEffect(() => {
console.log(debouncedValue);
}, [debouncedValue]);
const [inputValue, setInputValue] = useState('');
const debouncedValue = useDebounce(inputValue, 300);
useEffect(() => {
console.log(debouncedValue);
}, [debouncedValue]);
const [inputValue, setInputValue] = useState('');
const debouncedValue = useDebounce(inputValue, 300);
useEffect(() => {
console.log(debouncedValue);
}, [debouncedValue]);
const [inputValue, setInputValue] = useState('');
const debouncedValue = useDebounce(inputValue, 300);
useEffect(() => {
console.log(debouncedValue);
}, [debouncedValue]);