【发布时间】:2022-01-07 11:22:37
【问题描述】:
所以我一直试图让我的事件侦听器让组件工作并在滚动时更新。我找到了这篇文章:Get scroll position with Reactjs,我尝试了第二个答案(因为我主要使用钩子,我希望我的代码保持一致。)所以我的组件中有这段代码:
const [scrollPosition, setScrollPosition] = useState(0);
const handleScroll = () => {
const position = window.scrollY;
console.log(position);
setScrollPosition(position);
};
useEffect(() => {
window.addEventListener('scroll', handleScroll, { passive: true });
return () => {
window.removeEventListener('scroll', handleScroll);
};
}, [scrollPosition]);
代码没有向控制台记录任何内容,每当我尝试使用滚动位置时,该值始终为 0。我做错了什么吗?任何帮助将不胜感激!
【问题讨论】:
-
scrollPosition没有在effect回调中引用,因此它不是依赖项,应该被删除。删除后,代码似乎可以按您的预期运行。这是一个正在运行的codesandbox。确保您的“窗口”有足够的内容可以真正滚动。 -
好的,那么这可能是我代码中其他地方的错误。感谢您提供该信息以确认它在最基本的设置中确实有效。这非常有帮助。一旦我能更具体地找到导致问题的原因,我会更新它
标签: javascript reactjs react-hooks use-effect