react-query - 一个一个地获取列表项
问题描述
我有以下情况。我想在列表页面上获取所有用户及其数据。当您调用 getUsers 时,API 具有以下结构,它只返回一个 id 数组。然后我需要通过调用 getUser 查询来获取每个用户数据。
我想要的是有这样的东西,我知道它不起作用,但我想知道如何实现:
const { data } = useQuery("/api/users", getUsers);
Promise.all(data.map((user) => useQuery("/api/user/" + user.id, getUser)));
解决方案
也许这样的事情可以工作?
常量 getBatchUser = (userIds) => { return Promise.all(userIds.map((id) => getUser(`/api/user/${user.id}`))) .then(响应 => { 返回 Promise.all( 响应地图(响应 => { 返回响应.json(); }) ); }) .then(数据=>数据); } 常量组件 = () => { const users = useQuery("/api/users", getUsers); const { data, isLoading } = useQuery("batchedQuery", getBatchUser(users.data)); ... }
推荐阅读
- django - Stripe UI 组件无法在 Django 应用程序中正确呈现
- jquery - 在 android chrome mobile 中选择之前,Select2 输入关闭
- metatrader5 - 策略测试器 - 在达到规定值之前触发止损
- javascript - 使用 Vue 过滤表列
- javascript - TypeError:无法在 ReactJS 中读取 null 的属性“addEventListener”
- c# - XUnit 测试错误:无法将 system.collections.generic.list <"filename.class"> 转换为字符串
- vim - ' 之间有什么区别
' 和 'P' 映射时? - python - 在 sklearn 的 DecisionTreeClassifier 中访问非最优拆分
- r - 如何将数据框(或矩阵)中的列与另一个数据框的列一一相乘并对结果求和?
- android - Unity – 让应用程序出现在 iOS 上的“打开方式”下,用于特定文件类型