reactjs - React js 使用反应钩子从分页 api 中获取所有数据
问题描述
我正在开发一个反应应用程序,用于内部使用的编辑工具。我有一个用例,我需要获取所有分页的项目。问题是所有参数都是我们的后端。有限制和偏移。但是没有响应标头指示我当前在哪个页面上。任何知道我应该用我的代码更改什么来获取所有项目的人,这样我就可以运行跳过并获取,直到我得到所有项目以及如何更新skip
和take
异步以便使用正确的参数更新下一个请求?对于类组件,我会使用 setState 回调吗?
我的代码
const fetchItems = async () => {
try {
const items: any = await itemsService.getItems({
skip: 0,
take: 50,
})
setItems(items)
} catch (error) {
console.log(error)
}
}
解决方案
在这种情况下,您应该将 loadMoreFlag 保持为组件的状态,例如
const [hasLoadMore,setHasLoadMore]=useState(true);//assumeing it will have load more for very first time
之后,您可以像这样在 fetch 调用中使用它
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)
}
}
编辑
回答您关于使用 skip and take 的评论:
如何使用反应钩子制作等效逻辑?
您可以在函数组件内部声明并与钩子一起使用
const [skip,setSkip]=useState(0);
const [take,setTake]=useState(50);
现在您可以在需要时使用它们。
推荐阅读
- java - 多个端点中的一个失败时的 REST API 响应处理
- audio - 为什么立体声 mp3 文件在使用 ffmpeg 从 mp4 转换时会丢失一个通道?
- javascript - InnerHTML 未按预期呈现
- python - 当尝试循环绘制每个 Pandas 列时,Seaborn distplot 仅返回一列
- android - 在 FireBaseCrashlytic 新版本中找不到 HttpRequest.Base64
- android - 即使将权限添加到清单中,华为手机写入外部存储也失败
- c++ - 数字和字符串的宏定义
- c - 如何获得 C 中进程的最准确时间?
- regex - 参数的url重写规则
- vba - VBA 非常缓慢地卸载用户窗体