Код: Выделить всё
useEffect(() => {
const timeoutID = setTimeout(() => {
clearTimeout(timeoutID);
window.addEventListener("keydown", theFunction, true);
}, 500);
function theFunction(event: KeyboardEvent) {
// do something
}
return () => {
window.removeEventListener("keydown", theFunction, true);
};
}, []);
Я подозревал, что каждый раз, когда этот компонент сочетает, функция изменяется в памяти, поэтому это не та же функция, и поэтому React React не может его удалить. Я взял функцию из использования и положил ее в верхнюю часть компонента (за пределами определения функциональных компонентов, чуть ниже импорта).
Код: Выделить всё
// imports
function theFunction(event: KeyboardEvent) {
// do something
}
const Component = () => {
useEffect(() => {
const timeoutID = setTimeout(() => {
clearTimeout(timeoutID);
window.addEventListener("keydown", theFunction, true);
}, 500);
return () => {
window.removeEventListener("keydown", theFunction, true);
};
}, []);
Подробнее здесь: https://stackoverflow.com/questions/796 ... ction-at-c