reactjs - 使用 SWR 多次获取以填充数组
问题描述
我在 React 中有一个需要一组用户的组件。我可以使用 useUwr 一次获取一个用户,如下所示:
export function Hello(id: number) {
const { data } = useSWR('/api/user/{id}', fetcher)
return <div>hello {data.name}!</div>
}
我现在需要的是一组用户,所以基本上:
var users = [];
for(var i = 0; i < 100; i++) {
const { data } = useSWR('/api/user/{i}', fetcher);
users.push(data);
}
这种方法的问题是Error: Rendered more hooks than during the previous render.
正在考虑必须有一种更智能的方法来获取 100 个用户的数据。感谢您的任何建议。
解决方案
尝试这个:
function arrayFetcher(urlArr) {
const f = (u) => fetch(u).then((r) => r.json());
return Promise.all(urlArr.map(f));
}
export function Hello(id: number) {
let urlArray = [];
for(let i = 0; i < 100; i++) {
urlArray.push(`/api/user/${i}`);
}
const { data } = useSWR(urlArray, arrayFetcher);
return (
<ul>{data && data.map(x => <li key={x.name}>x.name</li>)}</ul>
)
}
推荐阅读
- c++ - C++ 使用 FindWindow() 找不到 cmd
- php - 如何将原始 SQL 查询转换为 Silverstripe SQLQuery 抽象层
- java - Java:将 Long Timestamp + int offset 转换为可读格式
- excel - 索引匹配 W/ 显示最高结果的两个标准
- javascript - 输入后在搜索栏中保留文本
- scala - Spark SQL仅映射一列DataFrame
- android - 类型转换器不工作
- google-sheets - 无法在 Google 表格中使用 MINUS 函数解析公式
- c++ - TCP 服务器不等待客户端响应,如何解决这个问题?
- javascript - Javascript忽略上/下键上的某些列表项