问题标签 [react-apollo-hooks]

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

react-apollo - 将 apollo useQuery 钩子与汇总捆绑在一起

我正在尝试创建一个使用 useQuery 导出功能的包

但是我收到以下错误:

这甚至是最简单的示例,它只导出 useQuery (obvs 实际代码不止于此)

我知道我的代码没问题,否则就好像我使用导入 useQuery

它工作正常

简单的例子在这里..

https://github.com/gilesbradshaw/use-query

0 投票
1 回答
270 浏览

reactjs - Apollo 客户端返回值的类型

这是一个标准查询react-apollo

如果我想要 pass或子组件,有什么方法可以访问那些 from 的类型loading吗?dataerrorreact-apollo

0 投票
1 回答
2332 浏览

react-apollo - Apollo useLazyQuery 反复调用

我正在尝试构建一个可用于表上任何 CRUD 操作的表单。对于更新操作,我想将变量与路由一起传递。所有这些都工作正常,但是当我使用惰性查询调用查询时,它对前几次调用什么都不做,然后在第三次调用时返回数据。这正常吗?我是否调用了错误的查询?有没有办法等待查询返回数据?

0 投票
2 回答
108 浏览

reactjs - 将子级用作函数时组件不呈现

我正在使用react-apollo查询 graphQL 服务器,并能够成功地为客户端提供数据。由于将有不止一个地方,我将查询数据我试图创建一个容器(重构)来封装useQuery钩子,以便它可以在一个地方使用。

第一次尝试(按预期工作)

我想将围绕查询的不同阶段的仪式封装到一个新容器(加载、错误状态)中,这样我就可以减少代码重复。

第一次尝试重构

  • Query 容器在query,variablescallback. 这负责根据查询的状态(加载、错误或没有数据返回时)返回不同的节点。

QueryContainer正在使用useEffect并调用callback何时data返回。我觉得这有点混乱,违背了封装在父母中并使用callback来交谈和更新孩子的目的。

第三次尝试(使用孩子作为功能)

摆脱了回调并将数据作为第一个参数传递给children函数。

我希望这可以正常工作,因为没有真正改变,并且data更新时的新渲染将子代作为带有data参数的函数调用。但是当我导航到该路线时,我看到一个黑屏(没有错误,我可以看到登录到控制台的正确数据)如果我再次单击该链接,我可以看到提交给 DOM 的组件。

不太确定这里发生了什么,并想知道是否有人可以了解这里发生了什么。

0 投票
2 回答
1844 浏览

reactjs - 如何获得突变反应?

我在我的 reactjs 应用程序中成功地进行了这种突变,但我想得到响应 graphql 返回但在我的 reactjs 应用程序中,这可能吗?

反应代码:

在 GraphQL 中:

0 投票
1 回答
955 浏览

reactjs - 如何更新 React-Hooks Apollo 轮询中的变量?

@apollo/react-hooks每 500 万次从 GraphQL 查询中轮询一次数据。

我的查询接受参数列表,包括当前日期时间,如下所示:

假设我在“2020-03-06 08h:00mn”调用我的第一个查询,使用pollInterval上面定义的,我的第二个查询将在 08h:05mn 调用,第三个查询将在 08h:10mn 调用”

预期的行为

当我在 1200 万之后查看 Chrome 网络上的查询时,我会看到 3 个具有不同时间变量值的查询:

  • 查询 1:variables.currentLocalDateTime === "2020-03-06 08h:00mn"
  • 查询 2: variables.currentLocalDateTime === "2020-03-06 08h:05mn"

  • 查询 3:variables.currentLocalDateTime === "2020-03-06 08h:10mn"

当前行为

  • 查询 1:variables.currentLocalDateTime === "2020-03-06 08h:00mn"
  • 查询 2: variables.currentLocalDateTime === "2020-03-06 08h:00mn"
  • 查询 3: variables.currentLocalDateTime === "2020-03-06 08h:00mn"

我试图做的

  • 我试图等待onCompleted事件useQuery,然后更新变量,但它没有帮助,因为它只会被第一次调用(我猜当新数据进来但我不确定)。

  • 我尝试使用useLazyQuery而不是,useQuery然后使用 asetInterval()来更新我的变量,然后再次调用查询,如下所示:

但似乎我正在以“肮脏的方式”使用 setInterval 重新实现默认的 Apollo 轮询。所以我不确定这是否是一个解决方案。

更新 React Apollo 轮询变量的任何反馈或经验?

0 投票
1 回答
1049 浏览

reactjs - 如何在 React 子组件中直接使用 Apollo 客户端

我有一个由 App 组件呈现的 Toolbar 组件,我想在单击工具栏按钮时进行一些 api-call 更新,例如。'节省'。

index.js:

应用程序.js

我知道如何处理工具栏中的按钮单击以及如何在树上上下传递道具和处理程序,这样我就不用担心,但我实际上想直接在子组件中访问 Apollo 'client' 对象 - 沿着这些行(例如在工具栏中):

我已经使用 useQuery 钩子在其他组件中使用了客户端,但这期望返回渲染/JSX 数据,我只想运行一个查询。我的理解是“客户端”对象保存在某个地方的上下文中,但我不知道如何获取对它的引用,所以我想我要问的是如何在挂钩之外访问“客户端”对象?

0 投票
0 回答
55 浏览

reactjs - ApolloError 类的钩子模拟

我正在重构一个在 React 和 Apollo 客户端上编写的旧组件,我有下一段代码:

)

我搜索了 ApolloClient 文档,但找不到此类的模拟或使用钩子的一些示例。

0 投票
1 回答
1014 浏览

typescript - 输入“默认客户端”' 不可分配给类型 'ApolloClient'

I am trying to explicitly supply a client to useMutation. Everything works fine except for the fact that typescript seems to see a type mismatch.

Type 'Defaul

I am trying to explicitly supply a client to useMutation. Everything works fine except for the fact that typescript seems to see a type mismatch.

Type 'DefaultClient<unknown>' is not assignable to type 'ApolloClient<object>'.

The client is very similar to the one shown in apollo's token authentication documentation

All I do really is import the client and supply it as an option to useMutation.

useMutation seem to be expecting another type that the one that is inferred. How can I solve this mismatch ?


It seems like you should have InMemoryCache as type parameter:

I've tried to understand how this parameter is used, and I can't quite figure it out. Honestly, the empty object seems to work fine too:

But when reading the source code it looks like it wants the cache type.

0 投票
0 回答
148 浏览

reactjs - 当我在 Apollo React 上连接更多客户端时,只有最后一个客户端会收到 GraphQL 订阅更新

基本上,当连接了多个客户端时,只有最后一个连接的客户端通过 Web 套接字接收 GraphQL 订阅数据。

旧的 React 类不会发生这种情况,只有当我通过 Apollo Hooks Provider 使用无状态函数时才会发生这种情况。我已经尝试了几种方法,例如subscribeToMore(与类完美配合),或者一般来说,此页面https://www.apollographql.com/docs/react/data/subscriptions/useSubscription上建议的所有方法。

这些是组件代码的相关部分,subscribeToMore 部分基本上是从旧的 React 类复制粘贴的,它在同一个项目中完美地工作。

(如果缺少函数或变量,那只是因为我避免发布很多混乱,代码已经过测试并且运行时没有错误,除了订阅问题)

这是客户