Javascript 反应无限滚动组件
我试图使应用程序类似于facebook。当我到达页面底部时,我正在从API获取更多数据。我正在使用React和Redux。 简化代码:Javascript 反应无限滚动组件,javascript,reactjs,Javascript,Reactjs,我试图使应用程序类似于facebook。当我到达页面底部时,我正在从API获取更多数据。我正在使用React和Redux。 简化代码: const detectBottomOfPage= () => { if((window.innerHeight + window.scrollY) > document.body.scrollHeight) { dispatch(bottomOfPage()); //increases scrollCount } }
const detectBottomOfPage= () => {
if((window.innerHeight + window.scrollY) > document.body.scrollHeight) {
dispatch(bottomOfPage()); //increases scrollCount
}
};
useEffect(() => {
window.addEventListener('scroll', detectBottomOfPage);
}, []);
useEffect(() => {
dispatch(fetchMoreData(scrollCount));
},[scrollCount]);
当我向下滚动时,它工作正常,并获取数据。(页面高度增加)。但当我刷新页面时,它会多次检测页面底部。我试图在刷新之前(在卸载事件之前)删除侦听器,但刷新之后它无法正常工作。有什么解决方案吗?最明智的解决方案是限制触发无限滚动的速度,而不是与所有不同的滚动怪癖作斗争 一种方法是通过一些状态检查来更新效果:
const[lastFetch,setLastFetch]=React.useState(0);
useffect(()=>{
const now=Math.floor(Date.now()/3000);
if(lastFetch
谢谢你的回答。然而,这并不能解决我的问题。如果依赖项数组中没有lastFetch,这个useffect就不能像这样工作。我的问题是当页面刷新时,它会收缩,我的处理程序会多次检测页面底部。