文档
参考
useQueries

useQueries

useQueries 钩子可用于执行多个查询:

const postQuery = query({
  fetcher: (id) => fetchPost(id),
});
 
const ids = [1, 2, 3];
const results = useQueries({
  queries: ids.map((id) => ({
    query: postQuery,
    variables: id,
    staleTime: Infinity,
  })),
});

选项

useQueries 钩子接受一个选项对象,其中包含一个名为 queries 的键,其值是一个数组,数组中包含与 useQuery 钩子相同的查询选项对象(不包括 queryClient 选项,因为可以在顶层传递 QueryClient)。

  • queryClient?: QueryClient:用于提供自定义的 QueryClient。否则,将使用最近上下文中的 QueryClient。

  • combine?: (result: UseQueriesResults) => TCombinedResult:用于将查询结果合并为单个值的函数。 如果在查询对象数组中多次使用相同的查询键,可能会导致某些数据在查询之间共享。为避免此问题,请考虑对查询进行去重,并将结果映射回所需的结构。

  • placeholderData

useQueries 钩子也支持 placeholderData 选项,但它不像 useQuery 钩子那样从先前呈现的查询传递信息,因为 useQueries 的输入可能在每次呈现时包含不同数量的查询。

返回值

useQueries 钩子返回一个包含所有查询结果的数组。返回的顺序与输入顺序相同。

合并查询结果

如果要将查询结果中的 data(或其他查询信息)合并为单个值,可以使用 combine 选项。查询结果将在结构上共享,以尽可能保持引用稳定。