问题标签 [apollo-link-state]

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 回答
354 浏览

graphql - 使用 apollo Query 传递 Apollo 客户端缓存数据

我有两个疑问:

第一个使用从本地状态获取数据,apollo-link-state第二个是外部调用。

我有一个 HOC 用于获取这样的帖子设置:

帖子的获取很好,但我想做的是在GET_FILTERS每次调用查询时添加从查询返回的任何内容GET_POSTS

我可以做的一件事是包装withPost到另一个,比如说withFiltersHOC,并将结果GET_POSTS作为变量传递给查询,但我一直想知道是否有任何其他方法可以通过某种上下文访问该数据,例如cache.readQuery仅使用withPostHOC。

0 投票
0 回答
404 浏览

graphql - Apollo react:将rest和graphql与链接状态相结合

我正在尝试使用 REST 端点发布数据和 GraphQL 以进行查询和获取以及 apollo-link-state。我的休息端点被击中并且正在创建应用程序。但是,当我尝试运行查询以写入缓存时,它并没有到达 graphql 端点。我不断收到以下错误:

这是我的 GQL 查询

这是我的解析器:

这是我的链接:

我的客户

我的反应组件:

当我点击按钮时,它调用创建端点并创建应用程序并返回 uuid。但是我想要发生的以下事情是点击graphql端点并使用从rest请求返回的uuid查询应用程序,并将该数据写入缓存/状态。

0 投票
1 回答
124 浏览

apollo-link-state - apollo-link-state 默认使用嵌套对象

我尝试在 apollo-link-state 中使用下面的对象作为默认值

然后我尝试在ApolloClient Query组件中获取pages数组和pageObj 。虽然我可以获得pages数组,但无法获得pageObj

我的查询如下;

有没有办法在 apollo-link-state 中使用这样的嵌套对象作为默认值?

谢谢

0 投票
1 回答
126 浏览

reactjs - Apollo 中深度本地状态的 Graphql 查询失败

我正在创建一个阿波罗反应应用程序。我希望阿波罗管理我当地的州。我想构建我的本地状态,因此并非所有标量值都在顶层。

这是我的配置:

然后这个应用程序记录undefined。即,查询{ author @client { id }}返回undefineddata.author。

必须注意的是,当我将作者类型设置为 Int,默认值为1,并进行查询{ author @client }时,应用程序正确记录了1

我怎样才能在我所在的州与阿波罗建立一些结构?

这些是我的相关依赖项:

0 投票
2 回答
693 浏览

javascript - Apollo 客户端:在清除或重置存储时保留/重置默认值

apollo-link-state用于本地存储错误,但清除缓存后出现以下错误。

我在 apollo 客户端配置选项中将默认值设置errors为空数组。[]

但是,在apolloClient.cache.reset()or之后apolloClient.store.reset(),我似乎丢失了所有默认值,导致此错误:

错误

任何想法如何解决这个问题?

0 投票
1 回答
408 浏览

graphql - apollo-link-state 添加具有默认值的字段以键入

这是我要完成的工作:我有一个 graphql API 端点,它返回一个像这样的 Project 对象(删除了不相关的字段):

我想使用 apollo-link-state 向所有这些 Request 对象添加一个客户端字段,如下所示:

这将允许我从呈现这些请求的组件中删除本地状态。问题是当我为我的 ApolloClient clientState 定义默认值时,如下所示:

Apollo 将其添加为新的 Project 对象,而不是将其添加到现有对象(具有 id)中:

当我给它 id 时,它会将“hi”字段添加到正确的项目中,但请求仍然缺少扩展字段。并且提供 id 显然只适用于特定项目。

我还尝试在 clientState 对象上使用 typeDefs 字段,如下所示:

但这似乎并没有改变缓存上的任何东西,我不知道我是否可以给它一个这样的默认值。

也许我误解了 apollo-link-state 的工作原理(甚至 graphql 的工作原理),任何能指出我正确方向的答案都值得赞赏。当谈到 graphql 或 apollo 时,我是一个初学者。

0 投票
1 回答
1183 浏览

react-apollo - 突变的返回值为空和/或未定义

当使用 apollo-link-state 运行 @client 突变时,解析器的响应仅仅是:

从我要返回的解析器 {data: { ...product }}。其中产品是具有多个值的对象,其中一个 __typename.

我尝试将返回值设置为各种值,例如 return product, return { data: product }return { data: { data: { product }}}。我想你明白了。

解析器:

突变:

调用突变的函数:

首先:我很抱歉要通过非常长的代码块。

上面代码的预期结果是,解析器会返回刚刚添加的产品,例如 { data: {...product}, errors: undefined },但它会返回 { data: {}, errors: undefined }如开头所述的那样。

如果您需要更多信息,或者我错过了什么,请告诉我。

0 投票
1 回答
29 浏览

apollo - 更新未使用的数据时,阿波罗本地状态是否更新订阅者

根据apollo-link-state 文档中的示例,它指出

一旦调用 client.writeData,render prop 函数上的查询结果会自动更新

假设我们在 apollo 本地缓存中 foo保留了两个变量。由 Apollo 包装查询。barComponentFooQueryfoo @client

那么在应用调用中的某个地方client.writeData({ data: bar: 'something' }),会ComponentFoo触发渲染(通过道具更改)吗?

还是只有当有人调用client.writeData({ data: foo: 'something' })更新 foo 时才会触发?

0 投票
1 回答
392 浏览

graphql - apollo-link-state 以及如何访问本地状态/缓存?

也许我只是没有得到 apollo-link-state 所做的事情,但我想如果我有一个“默认”值,那将通过 Provider 显示在我的道具中。然而,我找不到它。您如何访问“缓存”或本地状态?

我有:

我正在为我的解析器传递一个空对象,因为复制后端中的所有减速器绝对没有意义。我想我会在道具中看到“名字:Biff”。没有。

该商店是我的“redux”商店,不属于这个问题。我想用那个“客户端”道具,我会看到我的默认值。没有。

当我在子组件中记录我的道具时,任何地方都没有缓存或“名称:Biff”的迹象。我如何在我的子组件中获得这个本地状态。如果我用突变更新它,我应该会看到我的组件重新呈现并可以访问新更新的本地状态......但是......它在哪里?

0 投票
1 回答
916 浏览

react-apollo - 刷新页面时,apollo-state-link 不在缓存中保存状态

我注意到,当我在客户端本地更新我的缓存并将其路由到另一个页面时,缓存与数据一起存在。

但是,当我刷新该页面时,缓存被清除。有没有办法在刷新后保持缓存状态?