React Custom Debounce Hook Cleartimeout не работаетJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 React Custom Debounce Hook Cleartimeout не работает

Сообщение Anonymous »

У меня есть следующий пользовательский крючок: < /p>

Код: Выделить всё

import { useEffect, useRef } from 'react';

export const useDebounce = (cb: Function, timeout: number) => {
const timeoutRef = useRef(null);

useEffect(() => {
return () => {
clearTimeout(timeoutRef.current);
};
}, []);

return (...args) => {
if (timeoutRef.current) {
console.log('clearing timeout', timeoutRef.current)
clearTimeout(timeout);
timeoutRef.current = null;
}

timeoutRef.current = setTimeout(() => {
console.log('callback invoked')
cb(...args);
}, timeout);

console.log('latest', timeoutRef.current)
};
};
< /code>
и ниже компонент: < /p>
const CountriesList = () => {

const [inputValue, setIinputValue] = useState('');
const [countries, setCountries] = useState([]);

const apiCall = useCallback(async (input: string) => {
const response =  await fetch(`https://.../practice/countries/${input}`);
},[]);

const debouncedApiCall = useDebounce(apiCall, 5000);

useEffect(() => {
inputValue && debouncedApiCall(inputValue);
}, [inputValue]);

const handleInput= (e: React.ChangeEvent) => {
const value = e.target.value;
setIinputValue(value);
}

return (

 {handleInput(e)}} />

);
};
< /code>
Я ожидал линии < /p>
if (timeoutRef.current) {
console.log('clearing timeout', timeoutRef.current)
clearTimeout(timeout);
timeoutRef.current = null;
}
< /code>
Чтобы очистить существующие тайм -ауты, прежде чем начать новый. Но когда я запускаю этот код, после и iTerval, я получаю n -количество вызовов API, например, если я набрал 6 символов, я получаю 6 вызовов API. ClearTimeOut (Timeout); 
очистка существующих тайм -аутов? Я только ожидал, что последний будет стрелять.


Подробнее здесь: https://stackoverflow.com/questions/794 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Применение Debounce в панели поиска SwiftUI
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Применение Debounce в панели поиска SwiftUI
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Combine Debounce Textfield
    Anonymous » » в форуме IOS
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Реализовать Debounce Click страдать от ненужного использования модификатора.
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как определить Ontapgesture с Debounce в Swiftui, используя PassThroughSubject более проще, чем модификатор, модификатор
    Anonymous » » в форуме IOS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»