news 2025/12/17 13:35:13

200React-Query基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
200React-Query基础

一、导入使用

pnpm add @tanstack/react-query

二、以往请求接口

import{useEffect,useState}from'react'import{fetchDate}from'../helper'import{List}from'../List'functionDemo(){const[data,setData]=useState([]);constinitialDate=async()=>{try{steDate(awaitfetchDate('people)}catch(err){console.error(err)}}useEffect(()=>{initialDate()},[]);return<List item={data}/>}

缺点:

缺点详细描述TanStack Query 如何解决
1. 冗余的状态管理(Loading/Error/Data)必须在组件内使用多个 useState 来分别跟踪数据 (data)、加载状态 (isLoading) 和错误状态 (isError/error),导致代码繁琐且易错。“useQuery Hook 直接提供所需的所有状态,如 isLoading, isError, data, error 等,极大地简化了组件逻辑。”
2. 缺乏智能缓存和数据过期机制每次组件挂载或路由切换时都会触发重新请求,即使数据在短时间内并未改变,浪费带宽和用户时间。强大的自动缓存机制,根据设置的过期时间(staleTime)快速返回缓存数据,并在后台按需更新,避免不必要的网络请求。
3. 难以保持数据的“新鲜度”切换浏览器标签页回来后,或者网络连接恢复后,您需要手动编写逻辑来检查并重新拉取数据,以确保用户看到的是最新数据。默认内置了窗口重新聚焦(Refetch on Window Focus)和网络重连时自动重试功能,自动维护数据的时效性。
4. 全局数据共享复杂多个组件需要使用相同数据时,必须通过 Props Driling 或 Redux 等全局状态管理库来实现共享,且缓存管理和异步操作的管理变得非常复杂。通过**查询键(queryKey)**全局缓存数据,任何组件都可以轻松地通过相同的键访问和共享这份数据。
5. 实现乐观更新(Optimistic Updates)难度大对于数据的增删改操作(Mutation),为了提升用户体验而实现的“乐观更新”(在服务器响应前更新 UI)非常复杂且容易引入 Bug。useMutation Hook 提供了清晰的生命周期回调,使得实现乐观更新、错误回滚等逻辑变得简单和安全。

三、使用useQuery

import{useQuery}from'@tanstack/react-query'import{fetchDate}from'../helper'import{List}from'../List'functionDemoWithQuery(){const{data,isLoading,// 自动管理加载状态isError,// 自动管理错误状态error// 错误对象}=useQuery({// 数据的唯一标识符,用于缓存queryKey:['peopleData'],// 实际执行数据获取的函数queryFn:()=>fetchData('people'),// (可选) 设置数据多久后变为“陈旧”(stale),默认为 0// staleTime: 1000 * 60 * 5, // 5分钟内数据被认为是“新鲜”的});if(isLoading){return<div>数据加载中...</div>}if(isError){// 错误信息可以直接从 error 对象中获取console.error(error);return<div>数据加载失败:{error.message}</div>}// 直接使用获取到的 datareturn<List item={data}/>}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 10:31:30

软件测试中的等价类划分与边界值分析法:原理、实践与演进

在软件测试领域&#xff0c;高效设计测试用例始终是保障产品质量的核心环节。等价类划分&#xff08;Equivalence Partitioning&#xff09;与边界值分析法&#xff08;Boundary Value Analysis&#xff09;作为最基础且经典的黑盒测试方法&#xff0c;至今仍在各类测试场景中发…

作者头像 李华
网站建设 2025/12/16 10:29:38

京东商品SKU信息API技术解析

一、接口核心机制与反爬体系拆解 1.核心接口机制‌&#xff1a; 京东商品SKU信息主要通过商品详情页API获取&#xff0c;核心接口为https://item.jd.com/{商品ID}.html&#xff0c;通过解析页面数据获取SKU信息。API采用动态参数加密机制&#xff0c;请求需携带时间戳、签名等验…

作者头像 李华
网站建设 2025/12/16 10:29:30

Node.js性能优化终极指南:从瓶颈分析到集群部署

Node.js性能优化终极指南&#xff1a;从瓶颈分析到集群部署 【免费下载链接】node-interview How to pass the Node.js interview of ElemeFE. 项目地址: https://gitcode.com/gh_mirrors/no/node-interview 你是否曾遇到这样的场景&#xff1a;Node.js应用在高并发下响…

作者头像 李华
网站建设 2025/12/16 10:27:19

31、电气网络综合与化学反应网络精确矩动力学计算研究

电气网络综合与化学反应网络精确矩动力学计算研究 电气网络综合相关问题 在电气网络综合领域,存在几个重要的未决问题。首先是关于RLC网络阻抗综合的问题: 1. 为了合成包含n个电抗元件的RLC网络可实现的整个阻抗类,所需的最少电阻数量是多少? 2. 最多包含n个电抗元件和…

作者头像 李华
网站建设 2025/12/17 12:36:40

2025论文季AI工具实测:避开代写陷阱,这款免费辅助工具太省心

当图书馆的插座成了“抢手货”&#xff0c;当电脑文档里的“论文初稿”改到第8版&#xff0c;论文写作季的专属焦虑感便会准时上线。最近校园里总流传着“AI能直接出论文”的说法&#xff0c;但亲身经历过课程论文从开题到定稿的人都知道&#xff0c;论文的价值从来不在“交差”…

作者头像 李华
网站建设 2025/12/16 10:26:13

58、Ubuntu 实用工具与测试、Perl 编程入门指南

Ubuntu 实用工具与测试、Perl 编程入门指南 1. Ubuntu 实用工具介绍 1.1 ssh - import - id ssh - import - id 可通过安全连接访问公钥服务器(默认是 https://launchpad.net ),检索一个或多个用户的公钥,并将其追加到当前用户的 ~/.ssh/authorized_keys 文件中。 1…

作者头像 李华