Я пытаюсь задушить "колесо" события при прокрутке, используя библиотеку lodash для моего приложения React, но безуспешно.
Мне нужно прослушать e.deltaY со входа прокрутки, чтобы определить направление его прокрутки. Чтобы добавить слушателя, я написал хук React, который принимает имя события и функцию-обработчик.
Базовая реализация
const [count, setCount] = useState(0);
const handleSections = () => {
setCount(count + 1);
};
const handleWheel = _.throttle(e => {
handleSections();
}, 10000);
useEventListener("wheel", handleWheel);
My useEventListener hook
function useEventListener(e, handler, passive = false) {
useEffect(() => {
window.addEventListener(e, handler, passive);
return function remove() {
window.removeEventListener(e, handler);
};
});
}
Рабочая демоверсия: https://codesandbox.io/s/throttledemo-hkf7n
Моя цель состоит в том, чтобы задушить это событие прокрутки, чтобы было меньше событий и иметь несколько секунд для прокрутки моей страницы программно (scrollBy()
, пример).
В этот момент кажется, что регулирование не работает, поэтому я получаю много событий прокрутки одновременно