问题标签 [apollo-cache-inmemory]

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 投票
3 回答
1460 浏览

reactjs - React Apollo:添加新项目时更新列表缓存(带变量)

我很难弄清楚如何更新项目列表(在缓存中)。当使用 . 创建新项目时react-apollo

<CreateItemButton />组件(在我的情况下)没有嵌套在<ListItems />组件中。据我所知,我需要通过我的 createItemButton<Mutation />组件中的更新函数来更新缓存。

问题是当我尝试store.readQuery({query: GET_LIST_ITEMS, variables: ???})获取当前项目列表(以附加我最近创建的项目)时,这可能有变量/过滤器(用于分页、排序等)。

我怎么知道要传递给store.readQuery函数的变量,是否有一种“最后使用的变量”,或者你对如何解决这个问题有任何其他建议?

0 投票
1 回答
1590 浏览

reactjs - 获取`存储错误:应用程序试图写入一个没有提供类型名的对象,但存储已经包含一个具有类型名的对象`

我在更新时遇到存储错误,并且是 apollo 和 graphQL 的新手,所以无法理解我做错了什么。我正在尝试更新一个人的名字和姓氏。这个对象是嵌套的,我将 typeName 作为包装对象传递。如果有人理解这一点并可以提出建议,请告诉我

这是它在阿波罗中的样子:

验证类型:年龄@empId

人员详细信息:人员详细信息类型

第一个:“abc”
empId:10002
年龄:“21”
最后一个:“def”

值是从这里传递的:

我的更新查询看起来像这样:

更新时出现以下错误:

0 投票
1 回答
570 浏览

apollo-client - How to disable InMemoryCache for Apollo GraphQL client?

I am trying to completely disable caching on the apollo-client but its not working.

I have tried to set the fetchPolicy to 'network-only' or 'no-cache'. Is there something that I am missing?

0 投票
0 回答
931 浏览

service-worker - Apollo 与 Next.js 项目中的服务人员

我在https://www.shandillia.com/blog上有一个 NextJS 原型。显示的数据是从https://dev.schantillia.com/graphql上的 Strapi 安装中提取的。我还在 Github 上https://github.com/amitschandillia/proost/web(前端)有整个代码库。

我正在使用 Apollo 客户端与 graphql 源进行交互。还有一个服务工作者设置为启用 PWA。

一切正常,除了我无法在浏览器中缓存查询结果。Service Worker 能够缓存除 Apollo 查询结果之外的所有内容。有什么办法可以启用吗?目标是:

  1. 为了能够在服务器上使用某种查询结果的预取。
  2. 能够通过 service worker 将结果缓存在浏览器中。

与此问题相关的三个文件如下:

阿波罗设置


查询组件


博客页面


有问题的服务人员如下(为简洁起见,已编辑):

请指教!

0 投票
1 回答
406 浏览

apollo - Apollo GraphQL 客户端不会在查询中返回缓存的嵌套类型

我正在执行查询以获取PowerMeter详细信息,其中包含名为Project. 我这样写查询:

当我第一次执行查询时,project成功返回。问题是,当我使用相同的参数和默认值fetchPolicy( cache-first) 执行后续查询时,project不再返回。

我该如何解决这个问题?

另外,我打电话readFragment检查如何powerMeter保存在缓存中,响应显示powerMeterproject保存。

功率计第一次返回

第一次调用功率计后的片段

功率计第二次返回

第二次调用功率计后的片段

编辑 1:获取查询

下面的代码是我获取数据的方式。我正在使用useApolloClient而不是查询挂钩,因为我正在使用 AWS AppSync,但它还不支持查询挂钩。

编辑 2:获取策略详细信息

当我使用fetchPoliceequalscache-firstnetwork-only时,错误仍然存​​在。当我使用时no-cache,我没有收到错误。

0 投票
1 回答
146 浏览

apollo - 使用 apollo 缓存数据作为 graphql 查询参数

我的 SPA 中有一个页面显示分页的结果列表。可以使用侧栏中的某些复选框来过滤此列表。

我想使用 Apollo 缓存来处理过滤器状态,然后在执行查询时检索这些数据并将它们用作查询的参数。

我什至不知道这样的事情是否可能,有人知道该怎么做吗?

0 投票
1 回答
78 浏览

reactjs - 使用 apollo 缓存调用一次存储的 fetch API?

我一直在研究 Apollo GQL。我正在使用 apollo 缓存来减少不需要的 API 调用。我现在面临的问题是,当我更新了数据时,我不应该重新获取数据,因为 API 已经被调用过一次并存储在缓存中。

  • 我想做的事情是清除特定查询的缓存或从服务器重新获取数据。!!
  • 我无法清除整个缓存,因为我正在调用很多 API

在以下突变调用之后,我必须重新获取数据。

0 投票
2 回答
1271 浏览

reactjs - 使用`react-apollo-hooks`和`useSubscription`钩子时如何避免“自动更新”缓存

我有一些Apollo-Hooks代码用于useSubscription监听订阅中的事件变化:

此代码会自动更新响应的缓存,这在大多数情况下都很棒

但是,我需要在收到响应之后,在更新缓存之前进行一些结果处理。

有谁知道使用useSubscription钩子的方法,而不是自动更新缓存?

响应最终将始终包含一个实体__typename

0 投票
1 回答
895 浏览

graphql - Apollo 客户端是否缓存 React 中的嵌套对象?

进行以下查询:

有时,运行第二个查询会给我一个缓存版本的bar. 其他时候,它不会,但我不确定这是因为查询运行多次还是因为这是 React 中 Apollo 客户端的默认行为。

0 投票
1 回答
249 浏览

graphql - 为什么我们需要`cacheRedirects`?

我阅读了有关与缓存数据交互的文档,虽然我了解其cacheRedirects工作原理,但我有点困惑为什么首先需要它。这是我问另一个问题的部分原因:Apollo 客户端是否在 React 中缓存嵌套对象

我们知道数据很可能已经在客户端缓存中,但是因为它是通过不同的查询请求的,所以 Apollo 客户端不知道这一点。

这是为什么?

为了清楚起见,复制粘贴文档中的示例: