首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React Apollo - nodejs graphql后端返回异步响应后如何重新获取(更新)数据

React Apollo是一个用于构建React应用程序的GraphQL客户端。它提供了一种简单的方式来管理应用程序中的数据,并与后端进行交互。

在使用React Apollo时,当后端返回异步响应后,我们可以通过以下步骤重新获取(更新)数据:

  1. 在React组件中,使用useQuery钩子函数来定义一个GraphQL查询。该钩子函数将返回一个包含查询结果的对象。
代码语言:txt
复制
import { useQuery } from '@apollo/client';
import { GET_DATA } from './graphql/queries';

const MyComponent = () => {
  const { loading, error, data } = useQuery(GET_DATA);

  // ...
}
  1. 当后端返回异步响应后,useQuery钩子函数将自动更新loadingerrordata变量的值。我们可以根据这些变量的值来处理数据更新。
代码语言:txt
复制
const MyComponent = () => {
  const { loading, error, data } = useQuery(GET_DATA);

  if (loading) {
    return <p>Loading...</p>;
  }

  if (error) {
    return <p>Error: {error.message}</p>;
  }

  // 处理数据更新
  // ...

  return (
    // 渲染组件
    // ...
  );
}
  1. 在数据更新的处理中,可以使用data变量来访问最新的数据。根据具体需求,可以使用该数据来更新组件的状态、渲染UI等。
代码语言:txt
复制
const MyComponent = () => {
  const { loading, error, data } = useQuery(GET_DATA);

  if (loading) {
    return <p>Loading...</p>;
  }

  if (error) {
    return <p>Error: {error.message}</p>;
  }

  // 处理数据更新
  const handleDataUpdate = () => {
    // 使用data来更新数据
    // ...
  };

  return (
    <div>
      <button onClick={handleDataUpdate}>Update Data</button>
      {/* 渲染组件 */}
    </div>
  );
}

这样,当后端返回异步响应后,React Apollo将自动更新loadingerrordata变量的值,并触发组件的重新渲染。我们可以在重新渲染的过程中处理数据更新的逻辑。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云容器服务(TKE)、腾讯云数据库(TencentDB)等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面对极度复杂的前后端业务场景,使用 GraphQL 正确的姿势

其次是前端对接口的结构掌控有限,当前端的请求发送出去,接口所返回数据形式有可能并不符合预期,比如本该返回的数组变成了对象。 再来看下开发效率低的问题。...原本页面的渲染时间是取决于最慢的接口响应时间,而同步模式下则是所有接口串行返回的时间。OverFetching则正好相反,接口的返回数据远高于需要展现的数据,对前端和服务器端的资源造成了双重消耗。...这个资源字段一般是和后端商议决定,不过Apollo官方的推荐通过传入token来实现整个鉴权方案。...第一点就是GraphQL的N+1场景,即前端在查询数据的时候可能首先要查到IDS数组,然后再map IDS数组重新后端发起请求,最后后端通过多条SQL取到的可能是列表数据。...我们在技术栈的选择上,web用的是React,App用的React Native,后端主要的API源是用Ruby写的,还有部分Python用来做数据分析,目前所有的API都被迁移到了GraphQL上。

7.3K20

在 redux 应用中使用 GraphQL

您需要编写自定义代码来调用服务器接口,解释数据,对其进行规范化并将其插入到存储中 - 同时跟踪各种错误和加载状态。 在本教程中,您将学习如何通过 Apollo Client 来获取和管理数据。...您将不再需要编写多个操作调度程序、reducer 和规范化程序来在前端和后端之间获取并同步数据。...快速的启动一个服务端环境 启动一个 redux 脚手架 增加一个 GraphQL 客户端 (Apollo Client) 使用 GraphQL 获取数据 获取更多的数据 接下来要做的 1....如果我们不想在响应中看到作者的姓氏和幸运饼干签语条,可以更新成以下查询: ? 可以看到,这正是我们想要的形式。现在,我们已经确认服务器运行正常,并返回正确的响应,接下来让我们开始构建客户端。 2....获取更多的数据 为了获取并显示所有的作者信息,我们需要更新 GraphQL 查询语句以及渲染函数: import React from 'react' import { connect } from '

1.9K10

基于ReactGraphQL的黛梦设计与实现

所以就设计了一个黛梦(demo)------ 打通了GraphQL的接口与前端交互的流程,并且将数据存入MYSQL,分享下ReactGraphQL的使用,大致内容如下: GraphQL的增删改查接口设计与实现...后端这块是Node结合express和GraphQL做的接口,数据库用的是MySQL。 GraphQL的接口设计 我们先抛开GraphQL,就单纯的接口而言。...先定义用户实体和相应的接口,不做细节实现,访问相应的接口能返回相应的预期 定义一个全局变量(或者写进一个文件)去模仿数据库操作,返回相应的结果 结合数据库去实现细节,访问相应的接口能返回相应的预期 全局变量...构思页面 根据后端这边提供的接口,这里我们会有张页面,里面有通过列表接口返回数据,它可以编辑和删除数据,然后我们有一个表单可以更新和新增数据,简单的理一下,大致就这些吧。...那么前后端的架构就可以是 react-apollo,vue-apollo, 后端的话比如express-apollo,koa-apollo等等。

1.8K20

写在2021: 值得关注学习的前端框架和工具库

XState,不止适用于React,可以和Vue/Svelte/Ember这样的框架一起,也可以和RxJS这样的响应式库一起用。...你可能听过它不好的一面:笨重、学习成本高、断崖式更新…, 可能也听过它好的一面:不需要再自己挑选路由、状态管理方案、请求库等、依赖注入很香适合后端程序员快速上手…。...简单地说,你提供一个数据库,GraphQL Engine会为你基于数据库的结构(可能这就是目前都支持PostgreSQL的原因?)...也可以关注我的微信公众号:【前端留学生】 每天更新最新技术文章干货。...的useQuery接收的是GraphQL Document,BlitzJS中的则接收的是后端方法,其中会直接db.entity.create()这样去写数据库)。

2.8K10

写在 2021: 值得关注学习的前端框架和工具库

XState[4],不止适用于React,可以和Vue/Svelte/Ember这样的框架一起,也可以和RxJS这样的响应式库一起用。...你可能听过它不好的一面:笨重、学习成本高、断崖式更新..., 可能也听过它好的一面:不需要再自己挑选路由、状态管理方案、请求库等、依赖注入很香适合后端程序员快速上手...。...简单地说,你提供一个数据库,GraphQL Engine会为你基于数据库的结构(可能这就是目前都支持PostgreSQL的原因?)...,Apollo的useQuery接收的是GraphQL Document,BlitzJS中的则接收的是后端方法,其中会直接db.entity.create()这样去写数据库)。...记得关注加我好友,我会不定期分享前端知识,行业信息。2021 陪你一起度过。 点赞并分享给你的朋友是最好的支持~ 参考资料 [1] 学完Vue还有必要学习React和Node吗?

4.2K10

React 设计模式 0x6:数据获取

学习如何轻松构建可伸缩的 React 应用程序:数据获取 # React 中服务端数据获取的方式 在大多数 React 应用程序中,应用程序需要来自 API 或服务器的数据才能正常运行。...也会将数据从应用程序提交到服务器以接收某种响应。有几种方法可以将此数据发送/获取到 API 或服务器,可以使用内置的 API 或外部 npm 包来实现。...fetch() 方法接受一个必需参数,即要获取的资源的路径,返回一个 Promise,解析该请求的响应。...GraphQL 查询总是返回可预测的结果,使用 GraphQL 的应用程序速度快且稳定,因为它们控制获取数据,而不是由服务器来控制。...然而,当组件重新渲染时,这些数据并不总是需要重新计算或重新获取。有几种方法可以在 React 中实现数据缓存。

1.2K20

PayPal大规模采用GraphQL的探索和实践

当我们选择 GraphQL 时,我们正在寻找一种技术来帮助我们解决以下问题: 过度获取数据:我们的 REST(代表性状态传输)APIs 发送了客户端需要的部分响应和一些无关数据。...有了 GraphQL,我们可以发送更新,客户端不再需要担心版本的更新。由于所有更新都发布到了 GraphQL 中的一个端点,因此客户端可以在需要时获取更新的资源,而无需重新集成到新版本。...您还可以在 API 发布立即获得更新,而无需更新 SDK。 统一体验:PayPal 中的每个流程都有自己的 NodeJS 应用程序,每个团队都有自己的 ReactJS 实现。...更容易测试:Apollo Client 等 GraphQL 工具可以更容易地在 React 等 UI 中添加 GraphQL 查询。它有助于保持代码位于同一位置,并有助于调试和分离关注点。...通用库包括用于日志记录的插件、用于数据分类的指令、Apollo 和 playground 的插件、CLI、异常类和 Apollo graph 变体。 前端和后端的模板示例程序。

3K20

2019 简易Web开发指南

HTML & CSS HTML5 CSS3 Flexbox (简易教程),CSS Grid (简易教程) CSS Variables (Custom Properties) 响应式布局(Responsive...) Redux VueX NgRx Apollo (GraphQL Client) 后端渲染(server side rendering) Next.js (React) Nuxt.js (Vue) Angular...Node.Js:就算不做全栈,nodejs也将成为前端的必备技能 Python:如果除了web开发想往人工智能、机器学习、数据分析方向扩展的同学,python更合适 C#:个人很喜欢的语言,非常优雅和高效...& Apollo GraphQL简而言之是一种API 查询语言(QL = query language),提供了一种革命性的API实现方式。...GraphQL是一种规范(specification)而不是实现(implementation)。而ApolloGraphQL最火的实现。更多请参考:Awesome GraphQL

2.3K41

GraphQL 从入门到实践

比如,组件需要负责把异步请求的状态分发给子组件或通知给父组件,这个过程中,由组件间通信带来的结构复杂度、来源不明的数据源、不知从何订阅的数据响应会使得数据流变得杂乱无章,也使得代码可读性变差,以及可维护性的降低...graph-pack 是集成了 Webpack + Express + Prisma + Babel + Apollo-server + Websocket 的支持热更新的零配置 GraphQL 服务环境...id、name 这两个字段,因此 GraphQL 并没有返回多余的数据,怎么样,是不是很贴心呢 3.3 Mutation 知道如何查询数据,还得了解增加、删除、修改,毕竟这是 CRUD 工程师必备的几板斧...,且拿到了更改数据,并给定希望的字段。...后端通过 DAO 层与数据库连接实现数据持久化,服务于处理业务逻辑的 Service 层,Controller 层接受 API 请求调用 Service 层处理并返回;前端通过浏览器 URL 进行路由命中获取目标视图状态

2.5K31

【译】Graphql, gRPC和端对端类型检验

最终我们选择了Apollo GraphQL+gRPC+React+TypeScript这样一套技术栈,并对使用它们的结果感到满意。...使用apollo-client和react-apollo简化了前端代码对缓存和数据的管理。 灵活的查询方式方便我们在未来构建移动端以及内部应用。...我们所有的解析器(resolvers)都是遵循以下模式:从后端服务请求一些数据,可能会做轻量的数据转化工作,使得返回数据复合我们的schema。在这些解析器中几乎木有业务逻辑。...结果,静态类型很好的保证了服务端响应数据转化逻辑能够匹配我们的schema。由于GraphQL schema本身就是一种类型集合,可以根据它很方便地生成TypeScript类型。...GraphQL、gRPC、React和TypeScript,我们既享受了查询数据的灵活性,也保证了我们后端服务之间的原子性。

3.1K20

怎样使用 apollo-link-state 管理本地数据

那么剩下的 20% 的本地数据(例如全局标志、设备 API 返回的结果等)应该怎样处理呢? 过去,Apollo 的用户通常会使用一个单独的 Redux/Mobx store 来管理这部分本地的数据。...GraphQL 最大的一个优势在于,当给 GraphQL 语句中的字段加上合适的 GraphQL 指令,单条 query 就可以从多个数据源中获取数据,无论本地还是远端。让我们来看看具体的方法。...Apollo Link 使得在 Apollo Client 中管理本地的数据成为可能,从一个 GraphQL 服务器中获取数据,可以使用 HttpLink,而从 Apollo 的缓存中请求数据,则需要使用一个新的...Resolvers 在使用 Apollo Client 管理应用状态Apollo cache 成为了应用的单一数据源,包括了本地和远端的数据。那么我们应当如何查询和更新缓存中的数据呢?...以上的 Resolver 函数是查询和更新 Apollo cache 的方法。 若要在 Apollo cache 的根上写入数据,可以调用 cache.writeData 方法并传入相应的数据

2.3K100

为什么我使用 GraphQL 而放弃 REST API?

当你的团队在冲刺期间决定重命名或重新安排对象字段时,你能负担得起上线/api/v1.99端点的成本吗?即使完成了,团队会不会忘记更新规范并通知客户端开发人员更新内容?...也就是说,如果需要自定义参数、高级过滤行为或对请求 / 响应有效负载的一些更智能的处理,就需要从头重新实现端点。 另一项任务是在客户端代码中使用这些端点。...要了解这些工具是如何工作的,请查看 Star Wars API 示例,它可以作为 GraphiQL 的在线演示。 能指定从服务器请求的对象字段让客户端可以根据需要只获取需要的数据。...如果你使用 PostgreSQL 作为后端数据库,PostGraphile 能够扫描 SQL 模式并自动生成一个带有实现的 GraphQL 模式。...由于 Apollo 客户端库架构简单,我能够将一个使用 React.js 与 Redux 的应用慢慢过渡到 React Apollo,一个组件一个组件的,只在有意义的时候才这样做。

2.3K30

你不知道的 GraphQL

我会和产品和前端开发团队一起来讨论需要提供哪些数据类型,查询或更新操作。如果你了解领域驱动设计方法[4],你会很熟悉这个流程。前端开发团队在拿到服务端返回数据结构之前是没有办法开始编码的。...GraphQL通常扮演系统的API网关角色,对后端领域服务提供了一层薄薄封装。resolver应该只包含解析请求参数并生成返回数据要求的结构的功能 - 就好像MVC框架中的controller层。...啊哈~ 你可以在graphql.org网站找到关于GraphQL执行机制的描述[15]。 对接真正的数据库 在真实项目中,resolver需要和数据库或其它API打交道来获取数据。...在产品环境下,监听每个后端响应耗时非常有意义。...把resolver定位为一个纯函数,是GraphQL设计者们的另一个明智之举。 查询引擎的集成化测试 那么,如何来测试数据依赖,类型和聚合逻辑呢?

3.2K20

GraphQL最突出的架构优势是什么?

API 的触角伸到了前端框架的数据存储,也伸到了后端服务的合约层面。 这听起来可能有点虚幻,但它的确就是那样。在 Apollo GraphQL,我们将这种虚拟层称为数据图。...Apollo 发布了带有 apollo-link-state 的 Apollo Client React 开发人员就能用更少的代码满足所有这三个需求了。...数据图从客户端延伸到服务器,并为现代 Web 应用程序中获取数据和更改状态时面临的最常见基础架构问题提供了答案 为了通过 GraphQL后端服务通信,Apollo Client 公开了几种客户端方法...API 客户端了解如何解决该请求的唯一方法是检查错误响应(指望错误消息描述了所需的信息,否则也没用)。...前端开发人员可以使用数据图来创建自己的数据获取用例,而不必依赖后端开发人员。 GraphQL 消除了管理 API 版本的需要,Apollo 的 GraphManager 可以简化生产模式验证。

2.1K20

用TS+GraphQL查询SpaceX火箭发射数据

通过在此端点上调用 GET 请求,客户端可以接收后端的完全自我描述的数据,包括所有可用的数据和相应的类型。...将生成的目标文件夹更新为 src/generated/graphql.tsx (react-apollo 插件需要 .tsx)。 不要生成 introspection file。...添加用户交互 现在需要添加当用户点击面板中的项目时获取完整发射数据的功能。我们将在 App 组件中创建一个钩子来跟踪班次 ID 并将其传递给 LaunchProfile 组件以重新获取发射数据。...更新的 组件应如下所示: 1const App = () => { 2 const [id, setId] = React.useState(42); 3 const handleIdChange...文件即可,这样在选定的 flight_number 更改时能够重新获取完整的发射数据

3K20

为什么我不再用Redux了

现在,异步获取数据意味着数据必须位于两个位置:前端和后端。我们必须考虑如何在全局范围内以最佳方式存储这些数据,以便它们能对我们的所有组件都可用,同时保持数据缓存以减少网络延迟。...我们也不必知道如何高水平地标准化我们的数据。这种责任应该落在设计表的那些人(后端开发人员)身上。然后,后端开发人员可以用文档化的 API 形式为前端开发人员提供抽象。...如果我们不再在前端代码中管理后端状态,而只是将其视为需要定期更新的缓存会怎么样呢?将前端视为从缓存读取内容的简单显示层,我们的代码就会变得更加易用,并且更适合纯前端开发人员阅读。...一起使用,并使用异步调用来获取数据。...Apollo Client SWR 和 React Query 专注于 REST API,但如果你在 GraphQL 上需要类似的东西,就可以考虑 Apollo Client。

2.6K20

GraphQL项目中前端如何预生成Persisted Query

通过类型是一个 必填的String 的 locale 变量获取地址信息, 返回数据有 country, province, cities, 其中 cities是由 city, districts构成的...} } 复制代码 我在A页面需要country信息, 在B页面需要 country和province信息, 在C页面再多给我返回个cities 以前遇到这种需求, 后端至少得写3个API用来返回,当然前端也得写...简单来说, 还是为了更好的优化, 试想一下, 如果我已经可以将一个大量访问的schema的变动提前缓存起来, 并且准备好这份数据, 当前端访问的时候, 我直接将这份缓存好的数据扔给前端, 而不是再在后台重新查询拼接...这样的设想完成起来, 需要解决一个最主要的问题, 后端如何在前端没有访问的时候提前预知schema?...如何去预生成 我们这里采用的是, 在前端部署的过程中通过已有schema在node运行生成一段querystring, 通过hash发给后端, 后端将这段query持久化起来 具体的做法是: 获取源头

98120
领券