Reactjs 无限地使用效果调用函数

Reactjs 无限地使用效果调用函数,reactjs,Reactjs,我有一个获取和显示数据的函数。我需要调用这个函数两次,一次是在页面加载时,一次是在InfiniteSroll调用它时。问题是,当useEffect调用getData时,它会一直持续下去 代码: const getData=async(第页)=>{ const CancelToken=axios.CancelToken; const source=CancelToken.source(); get(`/api?page=${page}&limit=10`,{cancelToken:source.t

我有一个获取和显示数据的函数。我需要调用这个函数两次,一次是在页面加载时,一次是在InfiniteSroll调用它时。问题是,当useEffect调用getData时,它会一直持续下去

代码:

const getData=async(第页)=>{
const CancelToken=axios.CancelToken;
const source=CancelToken.source();
get(`/api?page=${page}&limit=10`,{cancelToken:source.token})
。然后(res=>{
setProducts(prevProducts=>{
返回[…新集合([…prevProducts,…res.data])]
})     
setHasMore(res.data.length>0)
console.log(res.data)
}).catch(e=>{
if(axios.isCancel(e))返回
})
}
useffect(()=>{
getData()
},[getData])
const handlePagination=()=>{
设置页面(第+1页)
}
...
... 

当useEffect调用getData时,它将永远消失。请注意,我使用的是react infinite scroll组件。

尝试这样更改useEffect

useEffect(() => {
 getData(),
 return () => {}
}, [])

试着像这样改变你的效果

useEffect(() => {
 getData(),
 return () => {}
}, [])

您的效果将更改为:

useEffect(() => {
    getData()
}, [page])
因此,当页面更改时,我的意思是滚动结束,将获取新数据


您面临无限循环,因为您在获取数据时获取数据。听起来很奇怪,但确实发生了。

您的效果将更改为:

useEffect(() => {
    getData()
}, [page])
因此,当页面更改时,我的意思是滚动结束,将获取新数据


您面临无限循环,因为您在获取数据时获取数据。听起来很奇怪,但它确实发生了。

这肯定会打破无限循环,但它不会达到无限滚动的目的。将[]替换为[page]对,这就是我的答案。是的,你是对的。我认为这是最好的解决办法谢谢,伙计。感谢。这肯定会打破无限循环,但它不会达到无限滚动的目的。将[]替换为[page]对,这就是我的答案。是的,你是对的。我认为这是最好的解决办法谢谢,伙计。谢谢。