前端
PythonJava运维数据库
TanStack Query
TanStack Query
  • getting started
    • 快速开始
    • 开发工具
    • Typescript
    • 默认配置
    • 网络模式
  • Query
    • 查询
    • 查询键
    • 查询函数
    • 查询选项
    • 并行查询
    • 有依赖的查询
    • 查询状态指示器
    • 窗口聚焦重新获取数据
    • 禁用/暂停查询
    • 查询重试
    • 分页查询
    • 无限查询
    • 初始化查询数据
  • 占位符
  • Mutation
    • 修改 Mutations
    • 主动查询失效 Query Invalidation
    • 修改导致的失效 Invalidation From Mutations
    • 通过修改的数据更新查询内容
    • 乐观更新
  • 取消查询
  • 默认查询函数
  • 过滤器
  • Suspense
  • 缓存数据
  • Api Reference
    • QueryClient
    • QueryCache
    • MutationCache
    • QueryObserver QueriesObserver
    • InfiniteQueryObserver
    • FocusManager
    • NotifyManager
    • useQuery
    • useQueries useInfiniteQuery
    • useMutation
    • useIsFetching
    • useIsMutating
    • useMutationState
    • useSuspenseQuery
    • useSuspenseInfiniteQuery
    • useSuspenseQueries
    • QueryClientProvider
    • useQueryClient
    • queryOptions
    • infiniteQueryOptions
    • QueryErrorResetBoundary
    • useQueryErrorResetBoundary
    • hydration
由 GitBook 提供支持
在本页
  • 查询状态为 pending
  • 显示全局后台获取加载状态

这有帮助吗?

  1. Query

查询状态指示器

查询状态为 pending

查询的状态为 pending 时,足以显示查询的初始加载状态,但有时您可能希望显示一个额外的指示器,表示查询正在后台重新获取数据。为了实现这一点,查询还会提供一个 isFetching 布尔值,您可以用它来显示查询处于获取状态,无论查询的 status 变量的状态如何:

function Todos() {
  const { status, data: todos, error, isFetching } = useQuery({
    queryKey: ["todos"],
    queryFn: fetchTodos
  });

  return status === "pending" ? (
    <span>Loading...</span>
  ) : status === "error" ? (
    <span>Error: {error.message}</span>
  ) : (
    <>
      {isFetching ? <div>Refreshing...</div> : null}

      <div>
        {todos.map((todo) => (
          <Todo todo={todo} />
        ))}
      </div>
    </>
  );
}

显示全局后台获取加载状态

除了单个查询的加载状态,如果您希望在任何查询正在获取(包括后台获取数据)时显示全局加载指示器,可以使用 useIsFetching 钩子:

import { useIsFetching } from "@tanstack/react-query";

function GlobalLoadingIndicator() {
  const isFetching = useIsFetching();

  return isFetching ? <div>Queries are fetching in the background...</div> : null;
}

这样,您可以显示一个全局的后台加载指示器,当任何查询正在进行时,都会触发该指示器的显示。

上一页有依赖的查询下一页窗口聚焦重新获取数据

最后更新于2个月前

这有帮助吗?