Я хочу 'настроить прослушиватель событий для получения только первого touchstart
события window
. Как только это произойдет, я хочу удалить этого слушателя.
Я использую React Hooks.
ВОПРОС
IЯ хочу знать, правильно ли это, или есть лучший подход:
useEffect(() => {
function onFirstTouch() {
setWindowTouch(true);
window.removeEventListener('touchstart', onFirstTouch, false);
}
window.addEventListener('touchstart', onFirstTouch);
}, []);
Это кажется правильным, но я также чувствую, что я собираюсь снова установить прослушиватель, когда мой компонент размонтируется.
ПРИМЕЧАНИЕ:
Я знаю, что мог бы сделать что-то подобное (используйте «hasTouched» ref
, чтобы проверить, было ли первое событие уже запущено, и игнорировать далеесобытия), но это не совсем то же самое.
useEffect(() => {
function handleTouch() {
if (hasTouched.current === true) {
return;
}
hasTouched.current = true;
setWindowTouch(true);
}
window.addEventListener('touchstart', handleTouch);
return () => window.removeEventListener('touchstart', handleTouch);
}, []);