问题标签 [apollo]

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 投票
2 回答
4668 浏览

reactjs - Apollo 客户端缓存

我刚开始在 React 应用程序上使用 apollo 客户端,但我被困在缓存上。我有一个包含产品列表的主页,我在其中进行查询以获取这些产品的 ID 和名称,以及一个产品页面,我在其中查询 ID、名称、描述和图像。

我希望如果用户访问主页,然后访问特定的产品页面,只查询该产品的描述和图像,在加载过程中也显示名称(因为我应该已经缓存了它)。我遵循了文档中的“控制商店”部分(http://dev.apollodata.com/react/cache-updates.html),但仍然无法解决。

当我们转到产品页面时完成的查询仍然要求产品的 id 和名称,而它们应该被缓存,因为我已经要求它们。

我想我错过了一些东西,但我无法弄清楚。这是一些代码:

我的控制台输出:

控制台输出

0 投票
1 回答
1512 浏览

apollo - 如何在其包装组件之外重新获取查询?

我有两个屏幕:

屏幕 1:结果

屏幕 2:编辑过滤器

当我在 Screen2 上编辑过滤器并按回时,我想重新获取 Screen1 上的查询(使用新构建的过滤器字符串变量)。编辑过滤器不使用突变或触发任何 Redux 操作(我将用户搜索过滤器/首选项存储在 localStorage/AsyncStorage 而不是数据库中,因此没有突变)。我只是在更改表单的本地状态并使用它来构建一个过滤器字符串,我想将它传递给 Screen1 上的某个查询。如果有帮助,我可以访问两个屏幕上的过滤器字符串。

似乎refetch()仅限于其查询包装的组件http://dev.apollodata.com/react/receiving-updates.html#Refetch那么我将如何从不同的屏幕重新运行查询?

我尝试在 Screen1 和 Screen2 上放置相同的查询,然后在 Screen2 上调用 refetch,虽然查询有效并在 Screen2 上获取新数据,但同名查询不会在我实际需要的 Screen1 上更新。如果他们有相同的名字,难道不应该吗?(但过滤器变量已更改)

在此处输入图像描述

如果我只是设计不正确并且有更简单的方法可以做到这一点,请告诉我。我希望如果我有 2 个屏幕,将相同的查询放在两个屏幕上,并使用新的过滤器变量重新获取其中一个查询,那么重新获取应该在两个地方发生,但它目前正在单独处理它们。

0 投票
1 回答
2366 浏览

javascript - Apollo:数据/突变道具未传递给组件

我有以下带有查询和突变的组件,但我的组件没有收到数据和突变道具。

我的代码中是否做错了什么或遗漏了什么?查询确实被执行了,只是没有传递下去。this.props.mutate 和 this.props.data 是未定义的。

0 投票
1 回答
247 浏览

apollo - Apollo 客户端乐观响应如何工作

http://dev.apollodata.com/react/mutations.html

我正在尝试optimisticResponse,但我很困惑......并且无法让它在我的本地工作。

我的问题是:

  1. optimisticResponse更新props并因此重新渲染?__typename: 'Mutation'你能离开它有多重要?
  2. updateQueries是为了新的记录出现吗?这个函数是自动触发还是你需要调用它?

有没有完整的例子,包括阿波罗服务器端?

0 投票
1 回答
310 浏览

reactjs - 当查询包含 Apollo 的边和节点时如何更新查询?

我在我的 React 应用程序上使用 react-apollo 来请求 GraphQL API。我想添加一个项目并在此添加后更新我的查询。

该项目已正确添加,但我无法更新我的查询。我必须刷新我的页面才能看到我的新项目。我遵循本指南

这是我的查询

这是我的突变,它添加了我的新项目

如何正确更新此查询?

0 投票
0 回答
642 浏览

angularjs - 如何使用 apollo 客户端将 graphql 与 angular js 连接起来

我正在尝试使用 graphql 和 angular js 构建一个简单的博客。我已经完成了 graphql 部分。现在我可以使用 graphql 查询数据库。现在我想显示我在 Html 页面中查询过的项目.如何使用 Angular js 和 apollo 客户端来实现它。我已经提到了这个例子

由于我是阿波罗和 Angular 的新手,我仍然不清楚。

0 投票
2 回答
168 浏览

reactjs - 如何构造一个从 redux 接收道具、进行查询并将结果保存回 redux 的组件?

在我的 Redux 商店中,我存储了一个 accountId。<Login>这在成功授权后由组件存储。该<Login>组件仅接收accountId(在 JWT 内部),而不是完整的 Account 对象及其所有属性。

accountId也可以通过其他组件的其他操作进行修改。

当由于accountId某种原因被修改时,我想为完整的 Account 文档触发一个新的 GraphQL 查询,并将其存储在 Redux 中。

为此,我创建了一个组件。我最初将 Redux 调度件放入 中componentWillUpdate(),但后来它不起作用(它没有收到完整的 GraphQL 查询结果)。如果我把它放在render()下面,它可以工作:

上述组件按预期工作。但是当我调用调度时它会引发警告:

所以显然我没有以正确的方式做事。我该如何构建它以便我得到结果并能够在没有警告的情况下将它们存储回 Redux?

0 投票
0 回答
1042 浏览

reactjs - 使用带有 react-router 的 apollo 客户端会给出关于客户端未定义的路由器上下文警告

我正在尝试将阿波罗添加到沃尔玛电极启动器反应应用程序中,并且收到有关客户端属性的警告。

如果我只使用 apollo 提供程序来包装一个不是 react-router 的组件,它似乎工作正常。当我添加反应路由器时 - 它显示警告 - 但是页面仍然加载阿波罗罚款。

应用程序.jsx

主页.jsx

路线.jsx

0 投票
1 回答
656 浏览

meteor - 在 graphql、meteor 和 apollo 中查询单个项目时,我返回空值

我可能忽略了文档中的某些内容,但我似乎遇到了能够从我的 graphql 查询中获取单个对象的问题。

这是架构:

这是解析器:

这是查询:

我得到这个结果:

我只是忘记添加一些东西吗,如果是的话,你能给我指出正确的方向吗?

0 投票
1 回答
581 浏览

react-redux - 使用 apollo graphql 客户端时 Redux 服务器端渲染中断

当我使用带有 redux 服务器端渲染的 apollo 提供程序时,

https://github.com/reactjs/redux/blob/master/docs/recipes/ServerRendering.md

我收到以下警告,它破坏了服务器端输出

然而,这呈现了良好的客户端。

应用程序

这是样板阿波罗代码