news 2026/4/23 1:55:17

TANSTACK Query中,isFetching,isLoading,isPending的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TANSTACK Query中,isFetching,isLoading,isPending的区别

三个主要状态解释

先明确几个状态的含义(基于 TanStack Query 最新版本):

  • isFetching
    — 只要有请求正在进行(包括初次拉取 + 重试 + 后台刷新等),就会是true。TanStack

  • isLoading
    — 只在**第一次 fetch(初始加载)**期间是true。等第一个请求结束(无论成功还是失败),就变成false
    — 等价于:isFetching && isPending(v5 的新术语)TanStack

  • isPending
    — 表示当前是在等待某个 fetch 执行(最初或重试中)。它和isFetching类似但更精细(用于区分“初始”和“后台”状态)。TanStack

🤔 在设置retry: 5时状态如何变化?

假设你的请求第一次失败了,需要重试 5 次:

✔ 初次请求阶段

  • 第一次请求正在发送 →
    isFetching = true,isLoading = true,isPending = true

✔ 第一次失败后开始重试之前

React Query 默认会按退避策略延迟一段时间再发起下一次尝试。TanStack
这段短暂的延迟期间:

  • 没有活跃的请求在执行
    所以:

    • isFetching = false

    • isPending = false

  • 是否显示加载指示器取决于你 UI 的逻辑

    • 对用户来讲可能要显示“重试中…”

    • 但 React Query 本身没把 retry 的延迟期算作 fetching。

✔ 在每次重试的 fetch 执行中

在实际发起重试请求的那一刻:

  • 请求开始 →
    isFetching = true

  • 如果是重试过程,并非第一次成功 →
    isLoading通常是false(因为不是首次加载)

  • isPending可能会在某些状态组合下和isFetching共同为true(取决于版本和细节)TanStack

✔ 重试全部失败后

最终如果 5 次都失败:

  • 不再有 pending fetch →
    isFetching = false
    isLoading = false
    isPending = false

  • isError=true,错误信息出现在error属性里。

总结

状态初始请求请求失败 & 等待重试(延迟)重试请求发起中重试结束(成功/失败)
isFetching
isLoading
isPending(通常和 isFetching 配合)

所以:

不是在 5 次重试期间这三个状态一直是true
❌ 在“重试延迟期”里这些状态是false
⚠️isLoading特别只和首次加载相关。

📌 你可以如何显示“重试中”状态?

如果你想显示“正在执行重试”的 UI,可以结合:

const { isFetching, failureCount } = useQuery(...); 比如: if (isFetching && failureCount > 0) { return <span>重试中… (第 {failureCount} 次)</span> }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 1:00:50

6条必须掌握的PCB设计规则

在PCB设计中&#xff0c;需要遵循许多规则来保证PCB的质量。以下是六条应牢记的常见设计规则。1. 接地电路规则最小环路规则要求信号线及其返回路径包围的区域应尽可能小。面积越小&#xff0c;对外界的辐射越少&#xff0c;对外界干扰的敏感性就越小。划分地平面时&#xff0c…

作者头像 李华
网站建设 2026/4/18 15:27:47

解决PyTorch安装Found no NVIDIA driver问题:v2.7镜像自动检测

解决PyTorch安装Found no NVIDIA driver问题&#xff1a;v2.7镜像自动检测 在深度学习项目开发中&#xff0c;最令人沮丧的场景之一莫过于刚写好模型代码、准备启动训练时&#xff0c;终端突然弹出一行红色错误提示&#xff1a; Found no NVIDIA driver on your system.明明机器…

作者头像 李华
网站建设 2026/4/22 1:26:04

定时器函数g_timeout_add_seconds使用详解

g_timeout_add_seconds() 是 GLib 库中的一个函数&#xff0c;用于在指定秒数后执行回调函数。它是 GTK/GLib 应用程序中常用的定时器函数。函数原型guint g_timeout_add_seconds(guint interval,GSourceFunc function,gpointer data);参数说明interval类型: guint (无符号整数…

作者头像 李华
网站建设 2026/4/17 22:05:26

PyTorch安装教程GPU Ubuntu版:使用v2.7镜像五分钟搞定

PyTorch-CUDA-v2.7 镜像实战&#xff1a;在 Ubuntu 上快速构建 GPU 深度学习环境 你有没有经历过这样的场景&#xff1f;刚拿到一块新显卡&#xff0c;满心欢喜地准备跑起第一个深度学习模型&#xff0c;结果卡在环境配置上整整两天——CUDA 版本不对、驱动不兼容、PyTorch 编…

作者头像 李华
网站建设 2026/4/20 14:22:10

Docker build缓存技巧:基于PyTorch-CUDA-v2.7定制私有镜像

Docker build缓存技巧&#xff1a;基于PyTorch-CUDA-v2.7定制私有镜像 在现代深度学习研发中&#xff0c;一个常见的场景是&#xff1a;你刚修改了几行训练代码&#xff0c;准备重新构建镜像进行实验&#xff0c;结果发现每次 docker build 都要花十几分钟重新安装 PyTorch 和 …

作者头像 李华