首页
学习
活动
专区
圈层
工具
发布

React 中请求远程数据的四种方法

React 是一个专注的组件库。因此,它对如何请求远程数据没有什么建议。如果要通过 HTTP 请求数据并将其发送到 Web API,可以考虑下面四种方法。...内联写法 集中管理 自定义 Hook react-query/swr 注意:在本文中,我将使用 fetch 进行 HTTP 调用,但是这些模式也适用于 Axios 之类的替代方法。...另外,如果你使用的是 GraphQ L,还可以考虑使用 Apollo 之类的其他不错的选择。这篇文章假设你正在调用传统的 REST API。 方式1:内联 这是最简单,最直接的选择。...但是还有很多我们没有考虑到的点:缓存?、如果客户端的连接不可靠,如何重新获取?你想在用户重新调整标签时重新获取新数据吗?如何消除重复查询? 你可以不断完善这个自定义Hook来完成所有这些操作。...但是,您应该只需要方式4: 方式4:react-query/swr 使用 react-query或swr,可以为我们处理缓存、重试、重复查询等等。我不必维护自己的自定义Hook了。

2.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React 中请求远程数据的四种方法

    React 是一个专注的组件库。因此,它对如何请求远程数据没有什么建议。如果要通过 HTTP 请求数据并将其发送到 Web API,可以考虑下面四种方法。...内联写法 集中管理 自定义 Hook react-query/swr 注意:在本文中,我将使用 fetch 进行 HTTP 调用,但是这些模式也适用于 Axios 之类的替代方法。...另外,如果你使用的是 GraphQ L,还可以考虑使用 Apollo 之类的其他不错的选择。这篇文章假设你正在调用传统的 REST API。 方式1:内联 这是最简单,最直接的选择。...但是还有很多我们没有考虑到的点:缓存?、如果客户端的连接不可靠,如何重新获取?你想在用户重新调整标签时重新获取新数据吗?如何消除重复查询? 你可以不断完善这个自定义Hook来完成所有这些操作。...但是,您应该只需要方式4: 方式4:react-query/swr 使用 react-query或swr,可以为我们处理缓存、重试、重复查询等等。我不必维护自己的自定义Hook了。

    4.5K10

    Next.js预渲染数据断层:在线商城个性化推荐的时效性困局

    3.2 方案二:客户端动态获取(SWR/React Query)核心思路:静态生成页面框架(无推荐数据),推荐列表通过客户端动态请求获取,使用 SWR 或 React Query 处理缓存、重试和实时更新...实现代码:import useSWR from 'swr';function Recommendations() { // 使用 SWR 获取推荐数据,key 为用户 ID(需登录,匿名用户可用设备...3.3 方案三:混合渲染(静态框架 + 服务端动态注入)采用静态骨架+动态数据注入的混合模式:静态部分:使用getStaticProps生成页面框架和非个性化内容。动态部分:客户端获取实时推荐数据。...)高(实时)高敏感数据推荐最终选型:采用客户端 SWR 获取方案。...API设计需要考虑多种使用场景和降级方案。希望本文的实践经验能为遇到类似问题的开发者提供有价值的参考,帮助大家在 Next.js 项目中更好地平衡性能优化和功能实现。

    20220

    现代 React 开发必备的 13 个神库,路由、UI 组件库、拖拽、虚拟列表都齐了

    开发者可以自由创造各种数据 Fetch 方法。大多数时候,都会用到 useEffect 和 useState 钩子,或者一些通用的状态管理库。...它有很多神奇的特性,可以让 React 中的数据 Fetch 和开发体验很丝滑。这些功能包括自动缓存、自动重新 Fetch、滚动恢复、Render-as-you-fetch 等。 2....SWR Vercel 的SWR是我们列表中的第二个数据 Fetch 库,是 React Query 之外的又一个不错的选择。...SWR 库比 React Query 小得多,更简单,但提供了许多神奇的功能,如可重用的数据 Fetch、Suspense、分页、内置缓存等等。...例如,构建一个使用 React Suite 的 UI、React Router 的路由、React Query 获取数据和 Recharts 渲染图表的 React 应用程序,这样才能最大化的提高学习效率

    8.3K30

    精读《Hooks 取数 - swr 源码》

    为了和官方文档有所区别,笔者以探索式思路介绍这个它,但例子都取自官方文档。 2.1 为什么用 Hooks 取数 首先回答一个根本问题:为什么用 Hooks 替代 fetch 或数据流取数?...第二个参数如果是 object 类型,则效果为配置项,第二个 fetcher 只是为了方便才提供的,在 object 配置项里也可以配置 fetcher。.../user"); }} > Logout ); } 大部分场景不必如此,因为请求的重新触发由数据和依赖决定...setData(newData); }); 其实还有别的解法,比如使用 useReducer 管理数据也能达到相同性能效果。...4 总结 笔者给仔细阅读本文的同学留下两道思考题: 关于 Hooks 取数还是在数据流中取数,你怎么看呢? swr 解决依赖取数的方法还有更好的改进办法吗?

    1.5K10

    淘宝天猫商品API:实时数据获取与安全隐私保护的指南

    四、数据安全与隐私保护在利用淘宝/天猫商品API进行实时数据获取时,数据安全与隐私保护至关重要。商家需要注意以下几点:1.保护API密钥安全: ​[​API密钥​]是用于验证应用身份的关键凭证。...商家应遵守相关规定,避免频繁调用API,以减轻对服务器资源的压力。3.数据加密与传输安全: 商家应使用[HTTPS]等加密协议进行数据传输,确保数据在传输过程中的安全性。...同时,对敏感数据进行加密处理,防止数据泄露。4.遵守隐私政策: 商家在使用淘宝/天猫商品API时,应严格遵守平台的隐私政策。确保收集、使用和存储用户数据的行为符合相关法律法规和平台规定。...5.用户同意与知情权: 在获取用户数据之前,商家应确保获得用户的同意和知情权。向用户明确说明数据收集、使用和存储的目的,以及相关的隐私保护措施。...同时,商家应当注意数据安全与隐私保护的问题,确保合规使用API,并采取必要的安全措施来保护用户数据。随着电商行业的不断发展,淘宝/天猫商品API的应用将更加广泛和深入,为电商企业带来更多的机遇和挑战。

    45610

    使用 Fetch API 处理AI流式接口,实现在Web开发中前后端的数据交互与显示

    使用 Fetch API 实现现代前端数据交互 引言 在当今的 Web 开发中,前端与后端的数据交互是构建动态应用的核心。...一、Fetch API 概述 Fetch API 是现代浏览器提供的一个用于发起网络请求的接口,它比传统的 XMLHttpRequest 更加强大、灵活且易于使用。...二、Fetch API 的详细使用 2.1 发起 GET 请求 GET 请求是最常见的请求类型,用于从服务器获取数据: javascript fetch('https://api.example.com...queryDeepSeek(prompt) { const apiKey = 'your_api_key_here'; // 实际应用中应从安全的地方获取 try { const response...(Stale-While-Revalidate) 另一个 React 数据获取库,由 Vercel 开发: javascript import useSWR from 'swr'; const fetcher

    1.1K10

    淘宝天猫商品API:实时数据获取与安全隐私保护的指南

    因此,淘宝/天猫提供的商品API成为商家实时获取商品数据的关键工具。本文将介绍如何利用淘宝/天猫的商品API实现实时数据获取,并提供相关代码示例。...三、实时数据获取的实现要实现实时数据获取,商家需要先在淘宝/天猫开放平台上注册账号,并创建应用以获取API的访问权限。...在实际应用中,你可能需要根据自己的需求进行相应的调整和扩展。另外,还需要处理异常情况和安全问题,例如处理网络请求失败、防范潜在的API滥用等。...总结淘宝/天猫商品API为电商企业提供了实时获取店铺商品数据的便捷途径。通过合理利用这些API,商家可以更好地管理库存、优化销售策略和提高运营效率。...同时,商家应当注意数据安全与隐私保护的问题,确保合规使用API,并采取必要的安全措施来保护用户数据。随着电商行业的不断发展,淘宝/天猫商品API的应用将更加广泛和深入,为电商企业带来更多的机遇和挑战。

    66710

    使用GDC API查看和下载TCGA的数据

    API是应用程序编程接口,很多的网站都有对应的API,方便程序抓取数据,比如NCBI, EBI, KEGG等等,GDC也有对应的API, 可以方便的查询和下载TCGA的数据,API的网址如下 https...,可以实现特定数据集的访问和下载,GDC API的base url如下 https://api.gdc.cancer.gov/ https://api.gdc.cancer.gov/...endpoint是内置的指令,支持的指令如下所示 ? 从功能上可以划分为查询,下载,提交数据三大块,常用的的功能包括查询和下载 1....可以看到API返回的信息中包含了网页上提供的基本信息。在实际使用中,更多的是按照某种条件进行检索,相关的参数很多,这里就不展开了。 2....https://docs.gdc.cancer.gov/API/Users_Guide/Getting_Started/ 通过熟练使用API,可以实现程序自动化的下载TCGA数据,有很多TCGA数据下载的

    1.9K10

    在线商城首页推荐商品列表数据缓存策略:SWR 优化实践

    引言我们的首页推荐商品列表中,数据的实时性直接影响用户购买决策和平台转化率,所以我们使用 SWR(Stale-While-Revalidate) 缓存策略,先展示缓存数据,后台更新,减少白屏时间。...一、问题现象描述:"快"可能会变成"错"在我们的线上商城项目中,使用了 SWR 进行数据缓存和获取首页推荐商品列表。...疑点:配置中多个"关闭重新验证"的参数叠加,可能导致SWR长期依赖缓存,不主动获取新数据。...3.4 第四步:业务场景差异化缓存策略不同类型的商品数据对实时性要求不同(如普通商品vs秒杀商品),需细化缓存策略:// 封装差异化SWR hooksexport const useProductSWR...缓存策略没有一劳永逸的解决方案,只有最适合业务特性的设计。希望通过本文的分享,能够帮助读者在前端开发中更好地使用SWR缓存机制,提升应用性能和用户体验。

    56630

    Next.js - SSR SSG CSR ISR Dynamic Routing

    data from external API const res = await fetch(`https://......SWR 的 React Hook 包,如果使用客户端渲染的话,强烈推荐使用 SWR,它可以处理缓存、重新验证、焦点跟踪、间隔重新获取等。...示例代码如下:import useSWR from 'swr'const fetcher = (...args) => fetch(...args).then((res) => res.json())function...在缓存期间内,用户的请求会直接返回缓存;缓存时间结束后,用户再次请求,会重新渲染并生成新的缓存。使用 ISR,就可以在运行时实现静态页面生成,而无需重新构建整个网站。...Dynamic Routing在 Next.js 中配合使用 getStaticPaths + getStaticProps 即可实现动态路由的预渲染,该动作在 next build 时执行,示例代码:

    1.6K20

    基于 Next.js 的 SSRSSG 方案了解一下?

    async function getStaticProps() { // 获取数据,例如从数据库、API、文件等 const data = ... // 返回的参数将会按照 key 值赋值到...SEO 优化的,其数据通常需要实时更新获取,因此采用 SSR 的方式,而 SSR 在服务端获取数据可以借助 getServerSideProps 方法 和构建时获取数据方法类似: export default..... } } (3)客户端渲染时获取数据 如果不需要“预渲染”时候获取数据,即不需要“静态生成”和“服务端渲染”的时候获取数据,则可以在对应页面组件代内,编写网络请求相关代码。...Next.js 团队提供了一个基于 React Hooks 的 useSWR 钩子,推荐使用,该钩子会处理缓存、重新验证、焦点跟踪、间隔重新获取等。... } 和一些封装的请求 Hooks 类似,useSWR 还支持自定义请求库,默认使用的是 fetch 的 pollyfill 模块(unfetch[13]),提供的中文官方的文档也非常清晰

    6.7K30

    使用Vue.js和Axios从第三方API获取数据 — SitePoint

    转载声明 本文转载自使用Vue.js和Axios从第三方API获取数据 — SitePoint 原文链接: www.sitepoint.com,本译文的链接地址:使用Vue.js和Axios从第三方API...获取数据 — SitePoint,Github上面本项目的源代码链接为:vuejs-news,本文中的纽约时报API的API秘钥申请有些问题,访问不了。...通常情况下,在构建 JavaScript 应用程序时,您希望从远程源或从API获取数据。我最近研究了一些公开的API,发现可以使用这些数据源完成很多很酷的东西。...您可以在 Vue 模板语法 这里阅读更多内容 我们现在已经完成了基本的布局工作: ? 从 API 获取数据 要使用 纽约时报API,您需要获得一个API密钥。...也可以查看在线的版本 here. 结论 在本教程中,我们已经学会了如何从头开始创建Vue.js项目,如何使用axios从API获取数据,以及如何处理响应、操作组件和计算属性的数据。

    8.3K20

    【React】1935- 来看看 SWR 如何用 React Hook 实现优雅请求

    这种策略首先从缓存中返回数据(过期的),同时发送 fetch 请求(重新验证),最后得到最新数据。 使用 SWR,组件将会不断地、自动获得最新数据流。 UI 也会一直保持快速响应。...中引入,而不是使用 hook 的方式获取,这种方式也可以用来实现预请求数据。...如果我们想要在使用 hook 时为请求的响应值提供类型,只需要传入一个泛型就OK,如下例: // B....使用一个有类型的 fetcher: // `getUser` 是 `(endpoint: string) => User`. const { data } = useSWR('/api/user', getUser...) 推荐使用方式 经过一段时间的实际使用,我们在项目中将每个获取数据的请求根据 数据类型 进行分类,并以 hook 的方式进行二次封装: import axios from 'axios'; import

    2.2K10

    面试官:请使用 JS 简单实现一套 SWR 机制

    SWR 的使用场景通常有:当前天气状况的 API,或者过去一小时内编写的头条新闻等。 代码实现 了解了什么是 SWR 后,接下来看看如何实现它。 实现之前,先拆解下目标: 1....如果数据已经过期,则发起 fetch 请求,获取最新数据 我们需要用一个“容器”来缓存请求回来的复杂数据,在 JS 中,我们很容易第一时间想到使用 Object。...随后调用会立即返回缓存数据。如果调用间隔超过 3s,将先返回缓存数据,再请求接口获取最新的数据。 大功告成!我们用近 20 行代码简单实现了一套 SWR 机制。...同时向外暴露的 get 和 set API 用法保持不变 class LRUCahe { constructor(capacity) { this.cache = new Map();...Map 的使用场景 理解 Promise 与 async 函数,并能实际使用 写代码时考虑性能优化 掌握数据类型的判断方法 了解 Vue 相关原理实现 具有 API 抽象与封装能力 能严谨,全面地考虑问题

    1.5K20

    鸿蒙(HarmonyOS)安全和高效的使用N-API开发Native模块

    使用 N-API 进行函数调用会引入一定的开销,因为需要进行上下文切换、参数传递、函数调用和返回值处理等,这些过程都涉及到一些性能开销。...数值转换使用 N-API 进行 ArkTS 与 C++ 之间的数据转换,有如下建议: * 减少数据转换次数:频繁的数据转换可能会导致性能下降,可以通过批量处理数据或者使用更高效的数据结构来优化性能; *...避免不必要的数据复制:在进行数据转换时,可以使用 N-API 提供的接口来直接访问原始数据,而不是创建新的数据副本; * 使用缓存:如果某些数据在多次转换中都会被使用到,可以考虑使用缓存来避免重复的数据转换...例如,图像处理、视频编码、数据分析等应用可以使用并发机制来提高处理速度。 虽然 N-API 本身不支持多线程并发操作,但是可以在多线程环境下进行一些数据交互,且需要格外注意线程安全。...,需要避免使用共享的数据结构和全局变量,以免竞争和冲突。

    79620

    自定义Hooks解析

    newParams); // 获取完数据之后调用setData和setLoading触发更新,返回新的数据 setData(res); setLoading.../usePersistFn'; const DEFAULT_KEY = 'USE_API_DEFAULT_KEY'; // 自己封装的Fetch类,并不是js自带的fetch class Fetch...我们自定义一个Fetch类的好处就是可以扩展很多功能,其中就包括已经实现的节流、防抖、成功和失败的回调、格式化结果,快速改变返回数据,取消请求、屏幕聚焦重新请求等功能。...data; export { getCache, setCache }; 从上面代码的注释来看,实现swr能力非常简单,只需要在每次请求的时候将数据存储到全局的缓存对象中,在初始化的时候先从缓存中获取缓存数据渲染到页面...hooks让swr的实现变得非常简单,目前优质的swr自定义hooks有本文讲的useRequest和github上star数量很多的useSwr。

    3.3K30

    简单的方法使用注解可以执行更清晰和类型安全的代码

    session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); } finally { session.close(); }   可以看出:使用接口...(基于注解),不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。...其实可以结合使用,接口中:简单的方法使用注解,复杂的方法使用xml配置。...selectBlog(int id); 1.3 作用域(Scope)和生命周期 对于依赖注入框架Spring   依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器(mapper...如果对如何通过依赖注入框架来使用 MyBatis 感兴趣可以研究一下 MyBatis-Spring 或 MyBatis-Guice 两个子项目。

    97920

    大数据笔记(五):HDFS权限和Java的api使用

    HDFS权限和 Java的api使用 前言 博主语录:一文精讲一个知识点,多了你记不住,一句废话都没有 经典语录:别在生活里找你想要的,要去感受生活里发生的东西 一、HDFS的权限 1、启蒙案例 Permission...] 结论:默认hdfs依赖操作系统上的用户和组 二、hdfs中Java的api使用 windows idea eclips  叫什么?...//其实用户和程序读取的是文件这个级别~!并不知道有块的概念~!...// blk01: he // blk02: llo lanson 66231 in.seek(1048576); //计算向数据移动后,期望的是分治...,只读取自己关心(通过seek实现),同时,具备距离的概念(优先和本地的DN获取数据--框架的默认机制) System.out.println((char)in.readByte());

    70181
    领券