Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
React 中的数据获取_创想鸟

React 中的数据获取

react 中的数据获取

数据获取是 react 应用程序的基础,支持加载用户数据、动态渲染内容等功能。 react 提供了一个灵活的数据处理生态系统,可以根据应用程序的复杂性和性能需求选择各种库和方法。在本文中,我们将探讨 react 中数据获取的几个关键方法,包括 fetch api、axios、async/await、react query、swr 和 graphql。

1. 使用 fetch api 获取数据

fetch api 是一个内置的 web api,它使网络请求更加简单,并受到现代浏览器的广泛支持。它返回一个 promise,该 promise 使用表示 api 请求中的数据的 response 对象进行解析。

例子

import react, { useeffect, usestate } from 'react';const fetchexample = () => {  const [data, setdata] = usestate([]);  const [loading, setloading] = usestate(true);  const [error, seterror] = usestate(null);  useeffect(() => {    const fetchdata = async () => {      try {        const response = await fetch('https://jsonplaceholder.typicode.com/posts');        if (!response.ok) throw new error('network response was not ok');        const data = await response.json();        setdata(data);      } catch (error) {        seterror(error.message);      } finally {        setloading(false);      }    };    fetchdata();  }, []);  return (    
{loading ?

loading...

FormX
FormX

AI自动从表格和文档中提取数据

FormX 76
查看详情 FormX
: data.map((item) =>

{item.title}

)} {error &&

error: {error}

}
);};

何时使用 fetch api

小型项目或具有基本数据获取需求的项目。与基于浏览器的应用程序的最小依赖性和兼容性。

2. 使用axios获取数据

axios 是一个适用于浏览器和 node.js 的基于 promise 的 http 客户端,它提供比 fetch api 更多的功能,例如请求和响应拦截器以及转换请求和响应的能力。

例子

import react, { useeffect, usestate } from 'react';import axios from 'axios';const axiosexample = () => {  const [data, setdata] = usestate([]);  const [loading, setloading] = usestate(true);  const [error, seterror] = usestate(null);  useeffect(() => {    axios      .get('https://jsonplaceholder.typicode.com/posts')      .then((response) => {        setdata(response.data);        setloading(false);      })      .catch((error) => {        seterror(error.message);        setloading(false);      });  }, []);  return (    
{loading ?

loading...

: data.map((item) =>

{item.title}

)} {error &&

error: {error}

}
);};

axios 的好处

支持可能不完全支持 fetch api 的旧版浏览器。通过拒绝 http 错误代码提供更好的错误处理。允许简单的请求和响应转换,使其在更大、更复杂的应用程序中流行。

3. 使用 async/await 语法以获得更好的可读性

使用 async 和await,在 javascript 中处理异步代码变得更加清晰。 fetch api 和 axios 都可以使用 async/await 语法,让代码更容易阅读。

获取示例

const fetchdata = async () => {  try {    const response = await fetch('https://jsonplaceholder.typicode.com/posts');    const data = await response.json();    setdata(data);  } catch (error) {    console.error('error fetching data:', error);  }};

异步/等待的好处

提高了可读性,并且比承诺链更容易处理。允许我们使用 try/catch 块进行错误处理。

4. react query:强大的数据获取和缓存库

react query 处理服务器状态的缓存、同步和更新,使您能够轻松获取、更新和缓存数据。 react query 的自动数据缓存和重新获取使其成为复杂应用程序的流行选择。

例子

import react from 'react';import { usequery } from 'react-query';import axios from 'axios';const fetchposts = async () => {  const response = await axios.get('https://jsonplaceholder.typicode.com/posts');  return response.data;};const reactqueryexample = () => {  const { data, isloading, error } = usequery('posts', fetchposts);  if (isloading) return 

loading...

; if (error) return

error: {error.message}

; return (
{data.map((item) => (

{item.title}

))}
);};

react 查询的好处

数据缓存和后台刷新。与 api 集成良好,并处理网络故障的重试逻辑。减少管理加载、错误和重新获取状态的代码。

5. vercel 的 swr(stale-while-revalidate)

swr 是另一个数据获取库,它优先考虑缓存和重新验证策略。 swr 由 vercel 开发,每当用户重新访问页面时,它都会在后台自动重新获取数据,从而保持数据最新。

例子

import react from 'react';import useswr from 'swr';import axios from 'axios';const fetcher = (url) => axios.get(url).then((res) => res.data);const swrexample = () => {  const { data, error } = useswr('https://jsonplaceholder.typicode.com/posts', fetcher);  if (!data) return 

loading...

; if (error) return

error: {error.message}

; return (
{data.map((item) => (

{item.title}

))}
);};

驻波比的好处

使用缓存优先的数据获取和自动后台重新验证。与流行的后端框架和 restful api 集成。非常适合需要用最少的代码保持数据最新的应用程序。

6. 使用 graphql 获取数据

graphql 是一种 api 查询语言,可以更好地控制返回的数据。它允许您仅获取所需的字段,这可以通过减少过度获取或获取不足来提高性能。

apollo 客户端示例

要开始使用 apollo client,请通过运行 npm install @apollo/client graphql 来安装它。

import React from 'react';import { useQuery, gql } from '@apollo/client';const GET_POSTS = gql`  query GetPosts {    posts {      id      title    }  }`;const GraphQLExample = () => {  const { loading, error, data } = useQuery(GET_POSTS);  if (loading) return 

Loading...

; if (error) return

Error: {error.message}

; return (
{data.posts.map((post) => (

{post.title}

))}
);};

graphql 的好处

通过控制检索的字段实现更高效的数据获取。减少网络负载,特别有利于复杂或嵌套数据。与 apollo client 等库良好集成,改善开发者体验。

结论

在 react 中选择正确的数据获取方法取决于您项目的复杂性、性能需求以及您对库和工具的偏好。这是一个快速总结:

fetch api:适合小型项目;内置且最小。axios:更高级的 http 客户端,具有更好的错误处理能力。async/await:提高异步代码的可读性和可管理性。react query:非常适合缓存、后台重新获取和服务器状态管理。swr:重新验证时过时策略,非常适合获取新数据。graphql with apollo:最适合需要特定字段的复杂数据需求。

以上就是React 中的数据获取的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1494968.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Nextjs 身份验证
上一篇 2025年12月19日 17:01:58
Axios上赛季这么厉害,你得试试这个神奇的重试策略
下一篇 2025年12月19日 17:02:10

相关推荐

  • 多模态AI如何识别假新闻 多模态AI信息验证技术探讨

    多模态AI如何识别假新闻 多模态AI信息验证技术探讨多模态AI如何识别假新闻 多模态AI信息验证技术探讨多模态AI如何识别假新闻 多模态AI信息验证技术探讨多模态AI如何识别假新闻 多模态AI信息验证技术探讨

    这篇文章将探讨多模态AI如何识别假新闻,重点讲解其背后的信息验证技术。我们将逐步解析多模态AI处理不同类型信息(文本、图像、视频、音频等)并融合判断的过程,帮助用户理解这一复杂的鉴别流程。通过了解其核心技术和步骤,可以更好地认识多模态AI在信息鉴别领域的应用。 ☞☞☞AI 智能聊天, 问答助手, A…

    2026年10月2日 • 用户投稿
    000
  • Java中灵活处理单双位数月份字符串并转换为LocalDate日期对象

    Java中灵活处理单双位数月份字符串并转换为LocalDate日期对象Java中灵活处理单双位数月份字符串并转换为LocalDate日期对象Java中灵活处理单双位数月份字符串并转换为LocalDate日期对象Java中灵活处理单双位数月份字符串并转换为LocalDate日期对象

    本文旨在深入探讨如何在Java应用中将用户输入的单双位数月份字符串(如“2”或“10”)高效且安全地转换为LocalDate日期对象,同时确保现有数据的兼容性。我们将介绍创建新LocalDate实例及修改现有日期月份的两种核心方法,并重点强调在转换过程中进行严格的数据校验与异常处理,以构建健壮的日期…

    2026年10月2日 • 用户投稿
    000
  • SSD大厂群联8月利润暴涨49倍:原厂涨价态度强硬 明年得缺货

    SSD大厂群联8月利润暴涨49倍:原厂涨价态度强硬 明年得缺货SSD大厂群联8月利润暴涨49倍:原厂涨价态度强硬 明年得缺货SSD大厂群联8月利润暴涨49倍:原厂涨价态度强硬 明年得缺货SSD大厂群联8月利润暴涨49倍:原厂涨价态度强硬 明年得缺货

    9月16日消息,内存及闪存市场近期传出涨价动态,美光、闪迪等原厂已暂停报价,新价格预计上调10%至30%不等。 SSD大厂群联近日发布8月营收报告,单月营收达59.34亿新台币,同比增长23.48%,税后纯利润高达6.5亿新台币,较去年同期激增49倍。 群联董事长潘建成指出,8月利润大幅增长,主要得…

    2026年10月2日 • 用户投稿
    000
  • DeepSeek可以写诗吗 DeepSeek创意写作能力测试

    DeepSeek可以写诗吗 DeepSeek创意写作能力测试DeepSeek可以写诗吗 DeepSeek创意写作能力测试DeepSeek可以写诗吗 DeepSeek创意写作能力测试DeepSeek可以写诗吗 DeepSeek创意写作能力测试

    本文将探讨人工智能模型DeepSeek在创意写作,特别是诗歌创作方面的能力。我们将共同了解AI如何处理语言和创意任务,并提供一个简单的步骤指南,推荐用户亲自测试DeepSeek的诗歌写作水平。通过这些步骤,您可以直观地了解AI在生成诗歌时的表现、风格以及可能存在的局限性,从而对DeepSeek的创意…

    2026年10月2日 • 用户投稿
    000
  • Java LocalDate:将单/双位数字符串转换为日期格式的实战指南

    Java LocalDate:将单/双位数字符串转换为日期格式的实战指南Java LocalDate:将单/双位数字符串转换为日期格式的实战指南Java LocalDate:将单/双位数字符串转换为日期格式的实战指南Java LocalDate:将单/双位数字符串转换为日期格式的实战指南

    本文详细阐述了在Java中如何将代表月份的单/双位数字符串(例如“2”或“10”)转换为LocalDate对象,并固定年份和日期。教程涵盖了使用LocalDate.of()创建新日期和使用withMonth()修改现有日期的方法,同时强调了在转换过程中对输入进行严格验证和错误处理的重要性,以确保数据…

    2026年10月2日 • 用户投稿
    000
  • 豆包AI如何设置快捷指令 豆包AI自定义命令创建教程

    本文将指导您如何在豆包AI中设置和创建自定义命令,帮助您更高效地与AI进行交互。通过设置快捷指令和创建个性化命令,您可以将常用的、复杂的指令预设好,只需简单的操作即可触发AI执行特定任务,从而节省您的时间和精力。本教程将详细讲解操作步骤,方便您学习和实践。 ☞☞☞AI 智能聊天, 问答助手, AI …

    2026年10月2日
    100
  • Java中处理抽象类字段的多态性JSON反序列化策略

    Java中处理抽象类字段的多态性JSON反序列化策略Java中处理抽象类字段的多态性JSON反序列化策略Java中处理抽象类字段的多态性JSON反序列化策略Java中处理抽象类字段的多态性JSON反序列化策略

    本文深入探讨了在Java Spring JPA项目中,如何有效地处理包含抽象类字段的JSON数据反序列化问题。当父类对象(如Pipeline)的字段类型是抽象类(如SourceConfig)时,客户端传入的JSON需要被正确映射到其具体的子类实例。文章将重点介绍使用Jackson库的@JsonTyp…

    2026年10月2日 • 用户投稿
    000
  • 掌握MPAndroidChart图表截图与Intent分享技巧

    掌握MPAndroidChart图表截图与Intent分享技巧掌握MPAndroidChart图表截图与Intent分享技巧掌握MPAndroidChart图表截图与Intent分享技巧掌握MPAndroidChart图表截图与Intent分享技巧

    本教程详细介绍了如何在Android应用中,利用MPAndroidChart库的内置功能捕获图表(如BarChart)的屏幕截图,并结合Android的Intent机制,实现将生成的图表图片无缝分享至其他社交媒体或应用程序,整个过程无需用户手动保存图片到特定文件夹,提升用户体验和应用功能性。 在现代…

    2026年10月2日 • 用户投稿
    400
  • Claude如何设置工作流程 Claude自动化任务配置指南

    Claude如何设置工作流程 Claude自动化任务配置指南Claude如何设置工作流程 Claude自动化任务配置指南Claude如何设置工作流程 Claude自动化任务配置指南Claude如何设置工作流程 Claude自动化任务配置指南

    本文将详细介绍如何为Claude设置高效的工作流程和自动化任务配置。通过以下内容,可以了解到从基础设置到高级自动化功能的完整操作流程,帮助提升工作效率。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 直接使用“Claude AI网页版在线使…

    2026年10月2日 • 用户投稿
    200
  • 使用 HashMap 实现灵活的 Java 成绩等级划分

    使用 HashMap 实现灵活的 Java 成绩等级划分使用 HashMap 实现灵活的 Java 成绩等级划分使用 HashMap 实现灵活的 Java 成绩等级划分使用 HashMap 实现灵活的 Java 成绩等级划分

    本文介绍如何使用 Java 中的 HashMap 数据结构来实现一个灵活的成绩等级划分系统。通过将成绩等级与分数范围关联,可以方便地根据输入的分数快速确定对应的等级。文章将提供示例代码,并讨论使用 HashMap 实现成绩等级划分的优势和注意事项,帮助读者更好地理解和应用。 HashMap 实现成绩…

    2026年10月2日 • 用户投稿
    200
  • 22.98万元起!新款智界R7/S7上市1小时大定突破5000台

    8月25日,智界汽车官方发布消息,新款智界r7与智界s7在上市仅1小时内,大定订单数突破5000台。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 新款智界R7 在智界与问界联合举办的秋季新品发布会上,新款智界R7和S7正式登场。凭借华为A…

    2026年10月2日
    200
  • js 如何用once创建只执行一次的函数

    js 如何用once创建只执行一次的函数js 如何用once创建只执行一次的函数js 如何用once创建只执行一次的函数js 如何用once创建只执行一次的函数

    once函数通过闭包维护called状态,确保传入函数只执行一次,首次调用时执行并返回结果,后续调用直接返回undefined;2. 除闭包外,也可用对象属性存储状态实现once,原理相同但写法不同;3. 实际应用包括初始化操作、事件监听、防止表单重复提交和数据缓存,均用于需函数仅执行一次的场景,提…

    2026年10月2日 • 用户投稿
    100
  • HashMap迭代实现成绩评级系统

    HashMap迭代实现成绩评级系统HashMap迭代实现成绩评级系统HashMap迭代实现成绩评级系统HashMap迭代实现成绩评级系统

    本文介绍如何使用HashMap在Java中实现一个简单的成绩评级系统。通过将成绩等级作为键,分数阈值作为值存储在HashMap中,可以方便地根据输入的分数查找对应的等级。文章提供详细的代码示例,并解释了如何处理异常输入,帮助读者理解HashMap的迭代以及在实际问题中的应用。 使用HashMap实现…

    2026年10月2日 • 用户投稿
    100
  • AI Overviews支持语音命令吗 AI Overviews语音控制功能

    AI Overviews支持语音命令吗 AI Overviews语音控制功能AI Overviews支持语音命令吗 AI Overviews语音控制功能AI Overviews支持语音命令吗 AI Overviews语音控制功能AI Overviews支持语音命令吗 AI Overviews语音控制功能

    AI Overviews作为人工智能信息整合工具,其交互方式一直是用户关注的焦点。本文将详细解析AI Overviews是否支持语音命令功能,并分步骤说明如何通过语音控制提升操作效率,帮助用户更便捷地获取信息。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek …

    2026年10月2日 • 用户投稿
    100
  • 英伟达发布Rubin CPX重构算力 谷歌/亚马逊/微美全息等AI芯片群雄加速并起!

    英伟达发布Rubin CPX重构算力  谷歌/亚马逊/微美全息等AI芯片群雄加速并起!英伟达发布Rubin CPX重构算力  谷歌/亚马逊/微美全息等AI芯片群雄加速并起!英伟达发布Rubin CPX重构算力  谷歌/亚马逊/微美全息等AI芯片群雄加速并起!英伟达发布Rubin CPX重构算力  谷歌/亚马逊/微美全息等AI芯片群雄加速并起!

    小K播早报《科创板日报》9月17日讯今日科创板早报主要内容有:工信部发布2025版数字化转型指引;Figure完成10亿美元C轮融资;字节游戏辟谣关闭上海工作室。《科创板日报》主播小K为您播报。 市场动态工信部印发《场景化、图谱化推进重点行业数字化转型的参考指引(2025版)》工业和信息化部办公厅近…

    2026年10月2日 • 用户投稿
    100
  • 解决Android PDFView重启后权限问题:一份详细指南

    解决Android PDFView重启后权限问题:一份详细指南解决Android PDFView重启后权限问题:一份详细指南解决Android PDFView重启后权限问题:一份详细指南解决Android PDFView重启后权限问题:一份详细指南

    本文旨在解决Android应用中使用PDFView库(如barteksc/AndroidPdfViewer)在设备重启后出现“Permission Denial”错误的问题。通过分析错误原因,提供代码示例和步骤,帮助开发者正确处理URI权限,确保应用在重启后仍能访问PDF文件。本文重点讲解FLAG_…

    2026年10月2日 • 用户投稿
    200
  • 解决Web部署后媒体文件播放异常:浏览器缓存与调试策略

    解决Web部署后媒体文件播放异常:浏览器缓存与调试策略解决Web部署后媒体文件播放异常:浏览器缓存与调试策略解决Web部署后媒体文件播放异常:浏览器缓存与调试策略解决Web部署后媒体文件播放异常:浏览器缓存与调试策略

    本文旨在探讨Web应用中媒体文件(如MP3、MP4)在本地开发环境正常,但部署到线上后出现播放异常的常见问题。文章将深入分析导致此类问题的原因,特别是聚焦于常被忽视的浏览器缓存机制,并提供一套系统的调试方法,帮助开发者快速定位并解决媒体资源加载失败的困境。 1. 概述:本地正常,线上异常的常见陷阱 …

    2026年10月2日 • 用户投稿
    100
  • javascript闭包怎么管理浏览器缓存

    javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存

    闭包不能直接操作浏览器缓存,但可通过封装缓存逻辑间接影响缓存行为:1. 利用闭包维持对缓存变量的引用,实现数据的存储与检索;2. 在闭包中实现缓存过期、更新和清理策略;3. 结合http头部信息(如cache-control)决定缓存读取与更新;4. 与service worker协同实现动态缓存管…

    2026年10月2日 • 用户投稿
    100
  • Perplexity AI可以过滤内容吗 Perplexity AI内容过滤设置

    Perplexity AI可以过滤内容吗 Perplexity AI内容过滤设置Perplexity AI可以过滤内容吗 Perplexity AI内容过滤设置Perplexity AI可以过滤内容吗 Perplexity AI内容过滤设置Perplexity AI可以过滤内容吗 Perplexity AI内容过滤设置

    Perplexity AI作为一款AI问答工具,其内容过滤功能可以帮助用户管理生成内容的敏感性。本文将详细介绍Perplexity AI的内容过滤机制及设置方法,通过分步骤说明帮助用户理解如何根据需求调整过滤强度。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSee…

    2026年10月2日 • 用户投稿
    000
  • 基于一次性密码(OTP)验证的安全性分析与设计建议

    基于一次性密码(OTP)验证的安全性分析与设计建议基于一次性密码(OTP)验证的安全性分析与设计建议基于一次性密码(OTP)验证的安全性分析与设计建议基于一次性密码(OTP)验证的安全性分析与设计建议

    一次性密码(OTP)作为一种常见的身份验证方式,被广泛应用于邮箱验证、手机号码验证等场景。然而,在OTP系统的设计和实现过程中,如果考虑不周,可能会存在潜在的安全风险。本文将深入探讨这些风险,并提供一些设计建议,以帮助开发者构建更安全的OTP验证系统。 在用户注册但尚未验证邮箱的情况下,存在一种潜在…

    2026年10月2日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信