当前位置: 首页 > ds >正文

WHAT - react-query(TanStack Query) vs swr 请求

文章目录

  • react-query
    • 什么是 TanStack Query(原 React Query)
    • 核心特性
  • TanStack Query vs SWR 对比
    • 具体特性对比
    • 哪个更适合你
  • 总结

react-query

react-query(现已更名为 TanStack Query)和 SWR 一样,都是专注于 远程数据获取、缓存和同步的库,但相比之下,它提供了更强的功能和更复杂的控制能力。

什么是 TanStack Query(原 React Query)

TanStack Query 是一个强大的数据获取库,适用于 React 和其他前端框架,专注于异步状态管理。它简化了远程数据获取、缓存、更新和同步的流程。

核心特性

特性描述
自动缓存和更新请求结果会被缓存,再次访问时优先读取缓存;支持背景更新(revalidation)
查询和变更分离(Query/Mutation)查询是获取数据,变更用于 POST/PUT/DELETE 等操作
自动重试/重取请求失败后自动重试,可配置重试策略
后台刷新(Refetching)支持页面重新聚焦或网络重新连接后自动重新请求
分页和无限加载支持内建 useInfiniteQuery
强大的 Devtools提供直观的开发者工具查看缓存、状态等
服务端渲染(SSR)支持支持 Next.js 等框架中的服务端数据获取
依赖查询(Dependent Queries)支持一个请求依赖另一个请求的结果

TanStack Query vs SWR 对比

具体特性对比

特性/维度TanStack QuerySWR(Stale-While-Revalidate)
作者/组织Tanner Linsley / TanStackVercel 团队(Next.js 作者)
API 设计更加结构化(如 useQuery, useMutation更简洁、基于 useSWR(key, fetcher)
缓存机制内建持久化、分页、依赖管理、缓存时间控制更轻量的缓存系统,支持简单配置
数据变更(POST等)明确用 useMutation 管理,配合缓存更新需手动使用 mutate() 触发更新
错误处理/重试自动重试 + 回退 + 拦截器机制支持基础重试逻辑,但不如 TanStack Query 灵活
分页/无限加载内建 useInfiniteQuery 等专用钩子支持分页加载(需配合 key 管理),较为原始
DevTools✅ 强大直观的浏览器调试工具❌ 没有官方 DevTools
依赖查询enabled 配置项可精细控制执行时机需要手动控制 key 或使用条件判断
学习曲线相对陡峭,功能多,需要理解 QueryClient 等简洁上手快,更偏向轻量级使用

哪个更适合你

使用场景推荐库
项目需要复杂的数据依赖、变更操作、分页等TanStack Query
小型项目/快速原型/只读请求为主SWR
需要优秀的开发者工具、缓存持久化支持TanStack Query
使用 Next.js,偏好轻量和灵活性SWR(与 Next 紧密集成)

总结

  • TanStack Query = 功能强大,适合中大型项目和复杂数据交互需求。
  • SWR = 轻量灵活,适合简单的数据获取场景或快速开发。
http://www.xdnf.cn/news/4958.html

相关文章:

  • VUE——自定义指令
  • LabVIEW 2019 与 NI VISA 20.0 安装及报错处理
  • IEEE PRMVAI Workshop 17 | 智能医疗数据分析与应用
  • Baklib云中台赋能企业内容智管
  • Kubernetes外部访问服务全攻略:生产级方案详解
  • 12.hbase 源码构建
  • PFC(Power Factor Correction)功率因数校正电路
  • 金蝶api对接沙箱环境python代码调试
  • SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(一)
  • 【Bluedroid】蓝牙 SDP(服务发现协议)模块代码解析与流程梳理
  • linux动态占用cpu脚本、根据阈值增加占用或取消占用cpu的脚本、自动检测占用脚本状态、3脚本联合套用。
  • java使用MinIO,虚拟机时间异常
  • 低秩适应(LoRA)与量化LoRA(QLoRA)技术解析
  • ‌CDGP|数据治理:探索企业数据有序与安全的解决之道
  • Web 自动化之 HTML JavaScript 详解
  • OpenCV-Python (官方)中文教程(部分一)_Day22
  • 云服务如何简化物联网设备生命周期(How Cloud Services Simplify IoT Device Lifecycles)?
  • 摄像头模组AF、OIS模组
  • 接口-DAO模式
  • 65.微服务保姆教程 (八) 微服务开发与治理实战
  • 车载网络TOP20核心概念科普
  • Go使用Gin写一个对MySQL的增删改查服务
  • JS 问号(?)运算符避免中间报错
  • VNC windows连接ubuntu桌面
  • 涨薪技术|0到1学会性能测试第52课-Tomcat调优技术
  • 从回调到 Promise:异步编程进化史
  • 数据库(MySQL)基础
  • 【Python】Python项目中的依赖与配置:requirements.txt、setup.py、pyproject.toml 详解
  • git cola如何选择指定的多个commit同时合并到另外一个分支上
  • vscode与keil的乱码不兼容问题