【发布时间】:2021-04-03 17:58:46
【问题描述】:
我有一个获取和显示数据的函数。我需要调用此函数两次,一次是在页面加载时,一次是在 InfiniteScroll 调用它时。问题是当 getData 被 useEffect 调用时,它会永远持续下去。
代码:
const getData = async(page) => {
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
axios.get(`/api?page=${page}&limit=10`, { cancelToken: source.token })
.then(res => {
setProducts(prevProducts => {
return [...new Set([...prevProducts, ...res.data])]
})
setHasMore(res.data.length > 0)
console.log(res.data)
}).catch(e => {
if (axios.isCancel(e)) return
})
}
useEffect(() => {
getData()
}, [getData])
const handlePagination = () => {
setPage(page + 1)
}
...
<InfiniteScroll
dataLength={products.length}
next={handlePagination}
hasMore={hasMore}
>
...
</InfiniteScroll>
当 getData 被 useEffect 调用时,它会永远消失。请注意,我使用的是 react-infinite-scroll-component。
【问题讨论】:
标签: reactjs