我正在开发一个React应用,以供内部使用的编辑工具使用。我有一个用例,我需要获取所有已分页的项目。问题是所有参数都在后端。有限制和抵消。但是没有响应标头指示我当前在哪个页面上。知道我应该如何更改代码以获取所有项目的任何人,以便我可以跳过并执行直到获得所有项目以及如何异步更新skip
和take
以便下次发出请求用正确的参数更新?对于类组件,我将使用setState回调吗?
我的代码
const fetchItems = async () => {
try {
const items: any = await itemsService.getItems({
skip: 0,
take: 50,
})
setItems(items)
} catch (error) {
console.log(error)
}
}
答案 0 :(得分:0)
在这种情况下,您应该维护loadMoreFlag作为组件的状态 像
const [hasLoadMore,setHasLoadMore]=useState(true);//assumeing it will have load more for very first time
之后,您可以像这样在调用中使用它
const fetchItems = async () => {
if(!hasLoadeMore)return;
try {
const items: any = await itemsService.getItems({
skip: 0,
take: 50,
})
if(items!==null && items !==undefined){
setHasLoadMore(true);
setItems(items)
}
else{
setHasLoadMore(false);//if you are requesting the last+1 page y ou will not recive any items
}
} catch (error) {
console.log(error)
}
}
编辑
获取有关使用跳过和接听的评论的答案:
我该如何使用React钩子使逻辑等效?
您可以在函数组件内部进行修饰,也可以与类似的钩子一起使用
const [skip,setSkip]=useState(0);
const [take,setTake]=useState(50);
现在您可以在需要时使用它们。