Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应无限滚动组件_Javascript_Reactjs - Fatal编程技术网

Javascript 反应无限滚动组件

Javascript 反应无限滚动组件,javascript,reactjs,Javascript,Reactjs,我试图使应用程序类似于facebook。当我到达页面底部时,我正在从API获取更多数据。我正在使用React和Redux。 简化代码: const detectBottomOfPage= () => { if((window.innerHeight + window.scrollY) > document.body.scrollHeight) { dispatch(bottomOfPage()); //increases scrollCount } }

我试图使应用程序类似于facebook。当我到达页面底部时,我正在从API获取更多数据。我正在使用React和Redux。 简化代码:

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就不能像这样工作。我的问题是当页面刷新时,它会收缩,我的处理程序会多次检测页面底部。