Сам дал ответ на свой вопрос, но мне кажется оно будет криво работать
useDebounce.js import { useState, useEffect } from 'react' const useDebounce = (value, delay) => { const [debouncedValue, setDebouncedValue] = useState(value) useEffect(() => { const handler = setTimeout(() => { setDebouncedValue(value) }, delay) return () => { clearTimeout(handler) } }, [value]) return debouncedValue } export default useDebounce Использование: ... const [inputValue, setInputValue] = useState('') const debounced = useDebounce(inputValue, 2000) // 2 секунды useEffect(() => { // логика }, [debounced]) ...
А зачем так сложно? То что я сделал будет плохо работать?
Скорее всего, будет плохо
debounce или throttle, смотри что будет более "юзерфрендли"
Обсуждают сегодня