问题标签 [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.

0 投票
1 回答
237 浏览

node.js - 如何在 Apollo 客户端中修复“找不到名称 'IResponse'”

这是完整的错误集:

我可以通过修改这两个 Apollo Client 文件来修复所有这些错误,但这不是一个可持续的解决方案。

我已经安装了 npm@types/isomorphic-fetch@types/node按照此线程的建议: https ://github.com/apollographql/apollo-client/issues/207并且我仍然收到此错误。

0 投票
1 回答
2366 浏览

reactjs - 当 Apollo 获取的数据通过 React 和 GraphQL 准备就绪时

  1. 我想基于 GraphQL 查询呈现一个Calendar以初始值 ( ) 开头的日历组件(名为 ) 。events
  2. 当用户按下按钮时,Calendar将仅获得部分事件(无需额外查询)并重新渲染。我设法分别做每一个,但不是两者都做:

对于(1):仅在数据准备好时渲染,不使用状态,则无法完成(2)。对于(2):使用状态但无法完成(1)。

下面的代码非常简单:

render()方法内部,我知道何时加载为假,因此,数据已准备好,但我不知道如何在其他地方进行。

如果我在 中初始化事件renderRows(requests)然后使用this.setState({events: events})react 将永远重新渲染。

问题:我如何完成(1)和(2)?

0 投票
1 回答
1847 浏览

react-native - 在 apollo 客户端中重新获取查询

所以我正在尝试构建一个小型搜索应用程序。我遇到的问题是当文本输入的状态发生变化时我无法重新获取查询。这是代码

所以我有这个父组件,它有 searchBar 组件,它是用户输入搜索查询的搜索栏,以及呈现结果的 searchResults 组件。只要 searchBar 组件中的文本发生更改,您就可以看到 Go Search 功能会更改状态。现在为 searchResults 组件..

},

我在这里尝试做的是,当父组件的状态发生变化时,它将作为道具在 searchResult 组件中传递,并在 graphQL 查询中作为变量传递。现在的问题是当道具改变时我无法重新获取它。我已经设置了 componentWillReceiveProps 来检查道具是否发生变化并重新获取数据,但它似乎不起作用。我已经阅读了一些关于订阅和 updateQueries 的文章,但我不确定这是否是我正在寻找的解决方案。需要绝望的帮助。提前致谢

0 投票
2 回答
7914 浏览

javascript - 在 GraphQL 中删除突变前的只读字段

Article我的架构中有一个类型:

对于它的更新,updateArticle(id: ID!, article: ArticleInput!)突变使用了相应的输入类型:

突变本身如下所示:

文章总是作为一个整体保存(而不是一个一个字段),所以当我将一篇文章传递给我之前获取的那个突变时,它会抛出像Unknown field. In field "updated",Unknown field. In field "__typename"Unknown field. In field "id". 这些有根本原因,这些字段没有在输入类型上定义。

根据规范,这是正确的行为:

(...) 此无序映射不应包含名称未由此输入对象类型的字段定义的任何条目,否则应引发错误。

现在我的问题是处理这些情况的好方法是什么。我应该在我的应用代码中列出输入类型允许的所有属性吗?

如果可能的话,我想避免这种情况,并且可能有一个实用函数为我切掉它们,它知道输入类型。但是,由于客户端不知道架构,这必须发生在服务器端。因此,不必要的属性将被转移到那里,我想这就是为什么它们不应该首先被转移的原因。

有没有比维护属性列表更好的方法?

我正在使用apollo-client,react-apollographql-server-express.

0 投票
1 回答
2644 浏览

react-native - Android 上的 graphQL networkStatus 7

我在前端使用 Apollo Client 和 React Native,在后端使用 graphQL。当我像往常一样在 IOS 模拟器上测试应用程序时,一切正常。但是当我在我的 Android 设备上运行该应用程序时,获取失败并且 this.props.data 出现 networkStatus 7 错误。有些东西告诉我这是 Apollo 客户端网络接口的配置,但不确定。这是我的配置

提前致谢

0 投票
6 回答
3034 浏览

reactjs - Apollo GraphQL 查询返回后如何更新 Redux 存储

我正在使用graphqlreact apollo 提供的 HOC 获取数据列表。例如:

我在受控单选按钮组中显示列表,默认情况下我需要选择其中一项。所选项目的id保存在 Redux 存储中。

selectedItem那么,问题是在查询成功返回后如何更新 Redux 存储(即设置)?

我想到的一些选择:

选项1

APOLLO_QUERY_RESULT我应该在我的 Redux reducer 中监听操作吗?但这有点尴尬,因为这样我就需要听两者APOLLO_QUERY_RESULTAPOLLO_QUERY_RESULT_CLIENT如果查询之前已经运行过。而且operationName道具只出现在APOLLO_QUERY_RESULT动作中而不是APOLLO_QUERY_RESULT_CLIENT动作中。所以我需要剖析每一个APOLLO_QUERY_RESULT_CLIENT动作,才能知道它是从哪里来的。难道没有一种简单直接的方法来识别查询结果操作吗?

选项 2

我是否应该分派一个单独的动作SELECT_LIST_ITEMcomponentWillReceiveProps例如(使用recompose):

选项 3

我是否应该通过注入 Apollo 客户端直接使用它,withApollo然后使用client.query(...).then(result => { /* some logic */ selectItem(...)}). 但是我会失去 react-apollo 集成的所有好处,所以不是一个真正的选择。

选项 4

查询返回后我是否应该完全不更新 Redux 存储?因为我也可以只实现一个选择器,selectedItem如果它已设置,则返回它,如果没有,它会尝试通过浏览apollo商店的一部分来派生它。

我的选择都不能让我满意。那么,我该怎么做呢?

0 投票
7 回答
3896 浏览

ruby-on-rails - Rails、Graphql、Apollo 客户端的身份验证令牌无效

我正在尝试使基本的 Rails、Graphql、Apollo-Client 设置正常工作,但在 rails 端出现 422 错误“无效的身份验证令牌”时遇到问题。

我对阿波罗的使用看起来不对吗?

这是一个带有 graphql gem 和 apollo 客户端的 Rails 5 应用程序。

导轨日志:

0 投票
2 回答
381 浏览

reactjs - PreFetching 数据阿波罗

我一直在玩阿波罗并重新取回,并且有问题。

我已经实现了一个在MouseOver 上预取数据的功能,当我将鼠标悬停在那个“组件”上时,它会同时发出两个相同的请求。任何想法为什么?

网络请求

0 投票
1 回答
1316 浏览

vue.js - 如何使用深度嵌套查询处理 Vue Apollo 中的删除?

我有一个查询,它返回多个嵌套对象以呈现一个充满信息的屏幕。我想删除一个深度嵌套的对象并乐观地更新屏幕(即不运行完整的查询)。

为了解释查询和 UI,我将使用类似 Trello board 的查询作为示例:

此查询的结果用于构建这样的 UI:https ://d3uepj124s5rcx.cloudfront.net/items/170a0V1j0u0S2p1l290I/Board.png

我正在使用以下方法构建应用程序:

  • VueJS
  • 维阿波罗
  • Scaphold.io 作为我的 GraphQL 存储

当我想删除其中一张卡片时,我调用:

突变成功删除了卡片,但我想根据突变立即更新 UI。执行此操作的简单选项是调用refetchQueries: ['everything']- 但这是一个昂贵的查询并且对于快速 UI 更新来说太慢了。

我想做的是乐观地更新 UI,但是 Vue Apollo 的示例突变既没有解决删除问题,也没有解决深度嵌套的场景。

从深度嵌套查询中删除项目并乐观地更新 UI 的正确解决方案/最佳实践是什么?

0 投票
1 回答
2990 浏览

javascript - 如何在 Vue 组件事件中触发 Apollo 查询?

mounted如何在 Vue.js 组件中触发 Apollo GraphQL 查询。

这是我的代码的样子:

查询在组件的第一次加载时运行良好,但我怎样才能让它与各种事件一起运行?