【发布时间】:2019-06-21 20:00:20
【问题描述】:
我正在尝试使用 lodash 库为我的 React 应用程序限制滚动时的事件“轮子”,但没有成功。
我需要从滚动输入中收听 e.deltaY 以检测其滚动方向。为了添加一个监听器,我编写了一个 React 钩子,它接受一个事件名称和一个处理函数。
基础实现
const [count, setCount] = useState(0);
const handleSections = () => {
setCount(count + 1);
};
const handleWheel = _.throttle(e => {
handleSections();
}, 10000);
useEventListener("wheel", handleWheel);
我的 useEventListener 钩子
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(),类似示例)。
目前节流似乎不起作用,所以我一次得到了很多滚动事件
【问题讨论】:
标签: javascript reactjs lodash addeventlistener react-hooks