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

Apollo graphql:突变后的writeQuery不会触发平面列表的重新呈现

Apollo GraphQL是一个用于构建客户端应用程序的开源工具集,它提供了一种现代化的方式来管理应用程序的数据状态。它基于GraphQL查询语言,通过将数据查询和数据变更进行组合,实现了高效的数据管理和实时更新。

在Apollo GraphQL中,突变(Mutation)是一种用于修改数据的操作。当使用writeQuery方法进行突变后,不会自动触发平面列表的重新呈现。这是因为writeQuery方法只是将数据写入Apollo缓存中,而不会自动更新UI。

要实现平面列表的重新呈现,可以使用refetchQueries选项或者使用update方法手动更新缓存和UI。

  1. 使用refetchQueries选项:在进行突变时,可以通过refetchQueries选项来指定需要重新查询的查询操作。这样,在突变完成后,Apollo会自动重新执行这些查询,并更新UI。

示例代码:

代码语言:txt
复制
const { data } = useMutation(MUTATION_NAME, {
  refetchQueries: [{ query: QUERY_NAME }],
});
  1. 使用update方法手动更新缓存和UI:在进行突变时,可以使用update方法手动更新Apollo缓存和UI。通过读取当前缓存的数据,进行修改后再写回缓存,可以触发UI的更新。

示例代码:

代码语言:txt
复制
const [mutationName] = useMutation(MUTATION_NAME);

mutationName({
  update: (cache, { data }) => {
    const existingData = cache.readQuery({ query: QUERY_NAME });
    // 对数据进行修改
    const newData = { ...existingData, ...data };
    cache.writeQuery({ query: QUERY_NAME, data: newData });
  },
});

Apollo GraphQL的优势在于其灵活性和高效性。它可以根据应用程序的需求,动态地查询和更新数据,减少了不必要的网络请求,提高了应用程序的性能。同时,它还提供了丰富的工具和生态系统,使开发人员可以更轻松地构建和维护复杂的客户端应用程序。

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

相关·内容

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

最终我们选择了Apollo GraphQL+gRPC+React+TypeScript这样一套技术栈,并对使用它们结果感到满意。...使用apollo-client和react-apollo简化了前端代码对缓存和数据管理。 灵活查询方式方便我们在未来构建移动端以及内部应用。...GraphQL示例 我们示例应用会是一个标准TODO MVC,支持列表展示、创建和删除TODO事项。...为了保证GraphQL server和前端之间类型安全,我们使用Apollo CLI代码生成器:使用命令行来生成我们所有GraphQL查询类型: React示例 在我们应用中需要用到三种查询:...整合全部三个自动生成组件,我们最终前端代码: import React, { Component } from "react"; import { GetTodos } from ".

3.1K20

GraphQL在现代Web应用中应用与优势

前端设置(使用Apollo Client)接着,我们需要在前端应用中配置Apollo Client,与我们GraphQL服务器通信:npm install apollo-boost @apollo/client...查询语言:查询、突变、订阅在GraphQL中,查询和突变是通过JSON-like结构表示字符串。...CreateUser突变创建了一个新用户并返回新用户ID和姓名。OnNewUser订阅等待新用户被创建时触发,返回新用户信息。2....GraphQL SchemaGraphQL Schema Definition Language(SDL)是一种用于描述GraphQL schema语言,它以简洁的人类可读格式定义了数据类型、查询、突变和指令等...查询根和突变根接下来,定义GraphQL查询根(Query)和突变根(Mutation)类型,它们是客户端请求数据和修改数据入口点。type Query { user(id: ID!)

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

    传统接口问题(前端) 刚才周老师已经从后端角度分析了这些痛点,我这里就从前端层面来重新谈论下这些问题。...这个资源字段一般是和后端商议决定,不过Apollo官方推荐通过传入token来实现整个鉴权方案。...现在转换到GraphQL,请求发起机制、数据刷新、文件上传等等都完全不同,相当于要从头开始学习新东西。 在使用Apollo过程中我们也遇到了一些坑。...比如多次请求触发导致返回结果为underfined,之所以会这样是由于第一个接口请求发送出去,还在loading阶段时,同一个接口又发送了第二次,导致返回数据发生冲突变成undefined。...第一点就是GraphQLN+1场景,即前端在查询数据时候可能首先要查到IDS数组,然后再map IDS数组重新对后端发起请求,最后后端通过多条SQL取到可能是列表数据。

    7.5K20

    「首席架构师推荐」React生态系统大集合

    GraphQL规范 GraphQL工具 GraphQL教程 GraphQL实现 服务器集成 数据库集成 Relay 中继一般资源 中继教程 中继工具 Apollo Apollo综合资源 影片 重要会谈...视图 - 在服务器上呈现咖啡React React页面中间件 ngReact - Angular中React组件 ReactLaravel coffee-react-transform - 为Coffeescript...脚本,用于更新中继API Apollo 基于GraphQL数据堆栈 阿波罗综合资源 阿波罗官方网站 Apollo GitHub 阿波罗博客 Apollo Slack Apollo工具 react-apollo-redux...- 一个小包装器,用于响应阿波罗突变自动发送动作 影片 reactjsvideos.com 重要会谈 Pete Hunt:React:重新思考最佳实践 - JSConf EU 2013 Pete Hunt...- f8 2015) Citrusbyte推出GraphQL:与Nick Schrock合作横向平台 Laney Kuenzel:接力中突变和订阅 - JSConf 2015 React今天和明天和

    12.4K30

    GraphQL-BFF:微服务背景下前后端数据交互方案

    按照同样要求,重新来一遍,大概率得到跟当前形态高度接近设计。这是我理解 GraphQL 语言设计里包含必然性。...但它们只是类型定义和函数定义,如果没有调用函数,就不会产生真正数据交互。 前端传递 query 查询语句,正是触发 Resolver 调用源头。 ? 如上所示,我们发起了查询,传递了参数。...也就是说,如果前端没有查询某个字段,就不会触发该字段对应 Resolver 函数,也就不会产生对数据获取行为。...Use 类型 friends 字段又是一个 User 类型列表。这样就构建了一个递归关联。...不会产生后端数据层解耦,在 GraphQL重新耦合尴尬现象。 关于 GraphQL 还有很多话题可以讨论,比如 batching , caching 等。

    3.7K72

    干货 | 万字长文全面解析GraphQL,携程微服务背景下前后端数据交互方案

    按照同样要求,重新来一遍,大概率得到跟当前形态高度接近设计。这是我理解 GraphQL 语言设计里包含必然性。...但它们只是类型定义和函数定义,如果没有调用函数,就不会产生真正数据交互。 前端传递 query 查询语句,正是触发 Resolver 调用源头。 ? 如上所示,我们发起了查询,传递了参数。...也就是说,如果前端没有查询某个字段,就不会触发该字段对应 Resolver 函数,也就不会产生对数据获取行为。...User 类型 friends 字段又是一个 User 类型列表。这样就构建了一个递归关联。...不会产生后端数据层解耦,在 GraphQL重新耦合尴尬现象。 关于 GraphQL 还有很多话题可以讨论,比如 batching , caching 等。

    3.7K21

    GraphQL两年实战避坑经验

    一旦 Product API Schema 发生更改,那么需要依次重新启动 Order 和 Public API 才能重新加载 Schema。...GraphQL Schema 每次更新时,都必须重新启动多个 API。这非常繁琐。 另一个可能出现问题是,如果应用需要逆链反向查询,而非顺链而下查询,这时拼接无法工作。...扩展 Schema 详细做法,参见 Apollo 文档。...例如,我们并不想让客户能够通过触发变更去更改支付状态。对此,一种解决方法是过滤掉特定查询和变更。具体而言,应用遍历 Schema 中所有的查询和变更,并与给定列表做对比。...如果查询存在于列表中,则设为可见。如果不在列表中,就从 Schema 中移除。另一个解决方法是添加中间件,由中间件检查当前用户是否有权限触发特定查询和变更。 实践中,我们组合使用了上面两种方法。

    1.1K30

    GraphQL-BFF:微服务背景下前后端数据交互方案

    按照同样要求,重新来一遍,大概率得到跟当前形态高度接近设计。这是我理解 GraphQL 语言设计里包含必然性。...但它们只是类型定义和函数定义,如果没有调用函数,就不会产生真正数据交互。 前端传递 query 查询语句,正是触发 Resolver 调用源头。 ? 如上所示,我们发起了查询,传递了参数。...也就是说,如果前端没有查询某个字段,就不会触发该字段对应 Resolver 函数,也就不会产生对数据获取行为。...Use 类型 friends 字段又是一个 User 类型列表。这样就构建了一个递归关联。...不会产生后端数据层解耦,在 GraphQL重新耦合尴尬现象。 关于 GraphQL 还有很多话题可以讨论,比如 batching , caching 等。

    1.6K20

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

    这样实现过几次,很容易就会发现,有一些不同模式、工具和框架可以带来帮助。虽然我们很幸运,不必再关心 SOAP,但 REST 也不是历史终结。...当你团队在冲刺期间决定重命名或重新安排对象字段时,你能负担得起上线/api/v1.99端点成本吗?即使完成了,团队会不会忘记更新规范并通知客户端开发人员更新内容?...如果你 GraphQL 服务器足够聪明,它将不会对你不需要字段运行数据库查询,而且有些库好到免费提供这种查询。...有很多流行开源项目都在使用 GraphQL:这个博客是基于静态站点生成器 Gatsby,它将 GraphQL 查询结果转换成数据,然后呈现到 HTML 文件中。...另外值得一提两个 GraphQL 库是 PostGraphile 和 Apollo

    2.3K30

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

    Apollo GraphQL,我们将这种虚拟层称为数据图。并且 Apollo 构建了很多可提高开发人员生产效率工具。...Apollo 发布了带有 apollo-link-state Apollo Client ,React 开发人员就能用更少代码满足所有这三个需求了。...对于突变,解析器可以简单地将控制权传递给一个应用层用例。 将用例作为应用程序重心,从 REST 切换到 GraphQL(或同时支持两者)变得轻而易举。...这样 API 更改可能不会引起注意,却会破坏 API 所有客户端,并且 API 客户端几乎不可能检测到该组合更改。...使用 Apollo Federation,每个服务团队都可以从其限界上下文中构建和管理自己 GraphQL 服务,将其注册到一个 Apollo 网关,从而在整个企业中分布化 GraphQL 运维工作

    2.2K20

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

    任何时候我们有突破性改变,我们都会将其发布为一个新 API 版本。我们面临问题是,当我们构建一个新版本时,与旧版本集成客户端如果不与新版本重新集成,就不会收到这些更新。...您还可以在 API 发布立即获得更新,而无需更新 SDK。 统一体验:PayPal 中每个流程都有自己 NodeJS 应用程序,每个团队都有自己 ReactJS 实现。...这些标准定义了命名约定、GraphQL 类型、请求头标准、指令标准和异常处理技术。 所有 GraphQL 操作都需要指定特殊指令,这些指令描述查询、突变和字段所有授权要求。...通用库包括用于日志记录插件、用于数据分类指令、Apollo 和 playground 插件、CLI、异常类和 Apollo graph 变体。 前端和后端模板示例程序。...各个团队都在独立地构建他们自己图,这会导致重复工作、不同异常处理和呈现方式,以及与处理身份认证标准方式偏差。 我们仍在整合内部工具。

    3.1K20

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

    以上是 Apollo Client 数据流架构图。 GraphQL:一旦学会,随处可用 关于 GraphQL 有一个常见误区:GraphQL 实施依赖于服务器端某种特定实现。...GraphQL 最大一个优势在于,当给 GraphQL 语句中字段加上合适 GraphQL 指令,单条 query 就可以从多个数据源中获取数据,无论本地还是远端。让我们来看看具体方法。...尽管不是必需参数,不过预热缓存是一个很重要步骤,传入 default 使得组件不会因为查询不到数据而出错。 . 以上代码 defaults 代表了 Apollo cache 初始值。...Resolvers 在使用 Apollo Client 管理应用状态Apollo cache 成为了应用单一数据源,包括了本地和远端数据。那么我们应当如何查询和更新缓存中数据呢?...@client 指令 当应用 UI 触发了一个 mutation 之后,Apollo 网络栈需要知道要更新数据存在于客户端还是服务器端。

    2.4K100

    用ServBay快速构建下一代GraphQL应用

    Node.js安装部署指南第2步:初始化Apollo服务器Apollo Server是一个开源、与GraphQL规范兼容服务器,它简化了GraphQL API构建。...安装Apollo Server和所需依赖:npm install apollo-server graphql然后,创建一个简单Apollo Server实例:const { ApolloServer,...为此,只需导航到 即可在浏览器中访问 Apollo Server API 沙箱http://localhost:/graphql。进入沙箱,您可以发送请求并观察响应。...例如,您可以利用突变添加新用户详细信息createUser。以下是用户 API 测试示例:通过执行这些步骤,您应该能够成功测试用户 API 服务功能。...部署微服务构建应用程序映像,您可以将它们推送到 Docker Hub,它是一个类似于 GitHub 集中存储库,但专门为 Docker 映像设计。

    17900

    GraphQL+Koa2实现服务端API结合Apollo+Vue

    ‐8字符序列 -- GraphQLString Boolean:true或者false -- GraphQLBoolean **ID(GraphQLID)**:ID标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中键...Union:联合类型用于描述某个字段能够支持所有返回类型以及具体请求真正返回类型 Enum:枚举用于表示可枚举数据结构类型 InputObject:输入对象 List:列表 列表是其他类型封装...query:仅获取数据(fetch)只读请求 mutation:获取数据还有写操作请求 新版本GraphQL还支持subscription,这是为了处理订阅更新这种比较复杂实时数据更新场景而设计操作...修改 删除 五、Vue中使用GraphQl 5.1 使用graphQl简单查询 安装 找到Vue中集成GraphQl文档 https://github.com/vuejs/apollo https...将它与vue-apollographql一起安装: npm install vue-apollo graphql apollo-boost --save 在src/main.js中引入apollo-boost

    5.2K42

    在 redux 应用中使用 GraphQL

    快速启动一个服务端环境 启动一个 redux 脚手架 增加一个 GraphQL 客户端 (Apollo Client) 使用 GraphQL 获取数据 获取更多数据 接下来要做 1....客户端正在运行,现在是开始添加 GraphQL 客户端时候了。我们目标是使用 GraphQL 查询,从服务器轻松获取数据并将其呈现在着陆页(HomeView)中。 3....增加一个 GraphQL 客户端(Apollo 客户端) 安装 apollo-client, react-apollo, 和 graphql-tag。...$ npm install apollo-client react-apollo graphql-tag --save 打开 Redux 应用入口文件 src/containers/AppContainer.js...} } } export default connect({ mapQueriesToProps })(HomeView) 通过这条查询语句我们就可以得到所有的作者姓氏以及他们作品列表

    1.9K10

    防止你GraphQL API被恶意查询

    ,但幸运是,Apollo团队创建了persistgraphql,它会自动从你客户端代码中提取所有查询,并生成一个不错JSON文件。...2、我们无法向公众开放我们API:在未来某个时候,我们希望向公众开放我们API,以便其他开发人员可以构建他们对Spectrum界面外观呈现。 ...如果我们只通过查询白名单,已经严重限制了他们选择,并且破坏了拥有GraphQL API重要性。 那些限制是我们无法使用,所以我们得重新设计。...(尽管DataLoader可能会缓解数据库压力,但网络和处理压力不会) 我们没有将第一个参数类型设置为Int(允许任意数量),而是使用graphql-input-number创建了一个自定义标量,该标量将最大值限制为...它也有乘法支持,所以如果你要求列表任何嵌套字段将乘以分页数量,这是非常整洁。

    1.8K10

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

    对于我认为较为主流不会包含(如Vue与React框架本身这种~)。...Hasura[53],功能比较全一款,支持PostgreSQL和MSSQL,除了上面提到以外还提供鉴权与触发器(类似Serverless中触发器),以及把外部已经独立部署GraphQL API也纳入管控...Nx Cloud[76],Nx(详细介绍见下面)提供云平台,主要功能是在项目达到一定规模,导致构建耗时较长时,避免每个开发人员要重新在自己本地构建一次项目,而是从云端下载已构建完成文件,以此来提高效率...这是最近前端还挺火热一个方向,主要基于Node一体化框架主要有这么几个: BlitzJS[81],前端NextJS,后端Prisma,中间基于GraphQL,但是实际上你不会直接去参与GraphQL...记得关注加我好友,我会不定期分享前端知识,行业信息。2021 陪你一起度过。 点赞并分享给你朋友是最好支持~ 参考资料 [1] 学完Vue还有必要学习React和Node吗?

    4.2K10

    GraphQL 查询你 Django 应用

    也正因此,GraphQL 在实现上更加繁复,所以面对 API 数量少、需求不会轻易场景时,REST 反而是更适合技术选型。...,它可以轻松满足大多数评论列表需求。...但是也许某一天,我们需要一个评论精简列表 API,当前返回内容中,除了 content 以外其他字段都变成多余了,那么后端开发需要重新定一个 MinimalCommentSerializer 来满足新需求...传统 REST 协议 假如我们需要获取所有用户维度评论,我们需要先获取通过 /users 所有用户 id,再使用 id 列表遍历查询 /users//comments 来获取相关列表。...主流客户端框架主要有两种—— Relay 和 Apollo ,我们仅从有限角度来看下二者异同: Relay vs Apollo Relay Apollo 框架支持 仅支持 React, React

    2K60
    领券