框架
版本

并行查询

“并行”查询是指并行执行或同时执行的查询,以便最大限度地提高获取并发性。

手动并行查询

当并行查询的数量不变时,使用并行查询无需额外操作。只需并排使用任意数量的 TanStack Query 的 injectQueryinjectInfiniteQuery 钩子即可!

tsx
function App () {
  // 以下查询将并行执行
  const usersQuery = injectQuery({ queryKey: ['users'], queryFn: fetchUsers })
  const teamsQuery = injectQuery({ queryKey: ['teams'], queryFn: fetchTeams })
  const projectsQuery = injectQuery({ queryKey: ['projects'], queryFn: fetchProjects })
  ...
}
function App () {
  // 以下查询将并行执行
  const usersQuery = injectQuery({ queryKey: ['users'], queryFn: fetchUsers })
  const teamsQuery = injectQuery({ queryKey: ['teams'], queryFn: fetchTeams })
  const projectsQuery = injectQuery({ queryKey: ['projects'], queryFn: fetchProjects })
  ...
}

注意:此方法要求您在组件的顶层调用您的 injectQuery 函数。如果您无法执行此操作,请继续阅读!

��用 injectQueries 进行动态并行查询

TanStack Query 提供了 injectQueries,您可以使用它动态地并行执行任意数量的查询。

injectQueries 接受一个选项对象,该对象具有一个queries 键,其值为一个查询对象数组。它返回一个查询结果数组

tsx
function App({ users }) {
  const userQueries = injectQueries({
    queries: users.map((user) => {
      return {
        queryKey: ['user', user.id],
        queryFn: () => fetchUserById(user.id),
      }
    }),
  })
}
function App({ users }) {
  const userQueries = injectQueries({
    queries: users.map((user) => {
      return {
        queryKey: ['user', user.id],
        queryFn: () => fetchUserById(user.id),
      }
    }),
  })
}