【发布时间】:2021-05-28 04:40:36
【问题描述】:
当我滚动一个 div 的底部时,我将更新状态。 我已成功检测到用户滚动的 div 底部,但更新状态总是记录初始值。 这是我的代码。
const ExampleApp = () => {
const [value, setValue] = useState(0);
useEffect(() => {
document.addEventListener('scroll', trackScrolling);
return () => {
document.removeEventListener('scroll', trackScrolling);
}
}, []);
const trackScrolling = () => {
const wrappedElement = document.getElementById('vContainer');
if (isBottom(wrappedElement)) {
// Here user scrolled to bottom of a div
console.log('Log Value: ', value); // I want to see the increased value, but always logs 0 every time I scrolled bottom.
setValue(value + 1);
}
}
}
我很好奇为什么每次检测到视图底部时值都没有增加。 当我检测到底部时增加状态值的解决方案是什么。 提前致谢。
【问题讨论】:
-
嗯...函数
isBottom在其他地方定义,我确信底部检测效果很好。当我检测到视图的底部时,我正在尝试增加状态值。但每次我到达视图底部时它总是记录 0。 -
我刚刚尝试了你的示例代码,但它总是记录 0。它记录了你这边增加的价值吗?
-
嗯...是的。但是你能看到控制台日志吗?每次我向上滚动并触底时,它总是记录值 0。而且浏览器中的值总是1。为什么它没有增加?
-
应用这个方法也可能会排队。
标签: reactjs react-hooks react-functional-component