问题标签 [apollo-client]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - Apollo Client/GraphQL 实时更新 UI
我有一个表单,我正在尝试创建一种用户体验,当您创建新记录时,它将为其创建一个 id 并实时写入数据库,并在 UI 中反映这些更改。或者您正在编辑一条记录,它已经被赋予了一个 id,所以它知道要更新记录。
我有一个突变可以处理两种情况:
没有传递给突变的 ID,因此它创建了一个新的。
它传递了一个 ID ,因此它更新了该对象。
该组件使用 compose 来包装 2 case 突变,以及对该对象的查询。我尝试附加一个 fetchPolicy: 'cache-and-network',但这不起作用。
预期结果:尝试取回组件操作中生成的 id
实际结果:重新渲染组件时ID显示为null,仅在页面刷新时更新
如何重现该问题:我有一个突变,如果它没有传递以前的 id,它会为一个对象创建一个新的 id。或者,如果它传递了一个 id,那么它将更新该对象。
reactjs - Apollo fetchMore 更新的 props 不重新渲染组件
我有一组来自 graphql 查询的“帖子”,我正在尝试使用apollo docs中描述的 offset + limit 进行分页。当前按下“loadMore”会更新查询,结果fetchMoreResult
是正确的。此外,连接newResults
时会正确显示。也许我做出了一个不正确的假设,但我理解文档的方式是新结果posts
将自动传递给我TestComponent
并重新渲染。这是不正确的吗?
编辑(2017 年 4 月 11 日)
我未能解释我的查询GetPosts
包含联合类型,这似乎可能是问题,因为如果我删除它们,更新会按预期工作。我已经打开了一个包问题,希望更清楚:https ://github.com/apollographql/react-apollo/issues/602
reactjs - 使用 graphql 反应组件默认道具
我正在尝试从后端 graphql 服务获取记录并使用 Array.map 函数呈现它们。不幸的是,在它们被加载之前我得到了错误,因为它们是未定义的。我试图在组件上设置默认道具,但它不起作用。我是否必须检查是否所有内容都已加载,或者是否有特定方法将默认值注入这些道具。我的代码现在看起来像这样
angular - Apollo Angular2 客户端处理承诺
我有以下功能是服务提供者。我想将后端和 UI 部分分开,因此我使用提供程序来获取所有数据。
}
在实际页面中,我有以下代码来获取数据。
问题是远程调用完成较晚,但视图试图显示数据。我收到以下错误。
reactjs - 阿波罗突变未出现在道具中
这是我的组件:
这似乎是一个非常简单的例子,但是当我运行它时,道具是空的:
reactjs - 从 getDataFromTree 中的 store 获取初始状态时我们应该如何处理错误
我想要做什么
使用来自我们的 graphql 服务器的错误数据渲染页面服务器端。
语境
我们的 GraphQL 服务器与多个 API 对话并返回由 Apollo UI 处理的 graphQL 响应。
某些 GraphQL 错误不被认为是严重的,我们仍然希望使用它来呈现页面。例如
通过我们从 Apollo 获得的上述响应,我们仍然希望使用thing
. 看看getDataFromTree
这里的实现,任何错误都会被抛出,而没有其余的数据。
我们计划如何处理我们的错误
以下是我们计划如何处理代码的片段:
如果有办法解决这个问题,或者我是否遗漏了什么,请告诉我。
额外问题:
- 甚至应该
getDataFromTree
抛出错误?感觉责任应该在消费者身上。
redux - 阿波罗单一事实来源
redux 具有“单一事实来源”的原则,我很难弄清楚来自 GQL 的轮询片段将如何继续保持这一原则。
TL;DR : apollo 是否对整个应用程序或每个 apollo 容器的实体进行规范化?
Apollo 有自己的 redux 商店。通过架构图,我看到在将数据应用到 redux 之前有一个规范化阶段。
我的问题是:假设我有一个帖子模式和一个用户模式。轮询帖子时,我会提取帖子信息,以及作者(用户模式)名称和个人资料图片。我有一个带有阿波罗的帖子容器。所以我猜阿波罗商店现在有这个状态:
但是当用户 - James 将他的名字更改为 Julian 和另一个组件时会发生什么,经常更新的聊天菜单组件将具有用户 ID:32 和不同的名字 Julian。
帖子容器也会因此而更新吗?还是会继续显示过时的数据?
offline - Apollo 客户端递归突变
apollo-client 可以使用以下示例吗?
例如,一个简单的 ToDo 应用程序和糟糕的互联网连接:
- 没有网络连接
- (1.mutation)创建一个新的todo
- (1. mutation => 乐观更新) 显示新的 todo (local tmp-ID)
- (2. 突变)检查新的待办事项是否已完成(使用 tmp-ID)
- (2. 变异 => 乐观更新) 将待办事项显示为已完成
- 现在连接到服务器
- ???
Apollo 客户端可以将 tmp-ID 替换为正确的待办事项,或者我该如何手动完成?
angular - 可以在 Observable 订阅方法中包含逻辑吗?
我正在观看@john_lindquist 的关于 RxJS 的蛋头教程,他强调了不包括业务逻辑而不是.subscribe()
方法的观点。
因此,我正在创建一个 canActivate 防护来防止用户进入无效路由,并且我不禁将逻辑构建到 subscribe 方法中。有一个更好的方法吗?
react-native - Apollo-客户 | 使用某些字段时没有查询结果
我正在尝试在我的 react-native 应用程序中使用 apollo-client,但由于某种原因,我只能在使用某些字段时从查询中获得结果。
这是我的第一个查询:
在 RN 和 GraphiQL 中完美地工作,但只要我添加或使用其他字段,title
我就不会从 RN 中的查询中得到任何结果。它在 GraphiQL 中运行良好,完全没有错误。
例如 :
这是我的事件类型: