当前位置: 首页 > 知识库问答 >
问题:

Apollo GraphQL局部和全局错误处理

朱通
2023-03-14

我正在使用Apollo与用React编写的Web应用程序中的GraphQL服务器进行交互。我试图在应用程序中实现错误处理,并依赖于apollo-link-error。

现在,我需要处理两类错误:

  1. 可以在执行Apollo查询或变异的组件中本地处理的错误,即需要在其上显示上下文错误信息的无效表单字段
  2. 可以全局处理的错误,例如,通过在页面的某个位置显示toast通知来显示错误详细信息

显然,一旦错误在本地处理,我就不需要全局处理它,因为在表单字段旁边显示错误消息和通过toast消息显示一般错误没有多大意义。

在尝试实现这一点时,我遇到的第一个绊脚石是全局错误处理逻辑在本地错误处理逻辑之前触发,这使我无法在本地拦截错误,然后找到防止全局逻辑介入的方法

我创建了codesandbox示例,该示例以最简单的方式设置Apolloclient,使用http和错误链接,并使用React-Apolloquery组件查询不存在的资源,从而生成错误。

它表明全局错误处理逻辑在局部错误处理之前起作用。我需要反过来。

共有1个答案

益泰平
2023-03-14

我已经发布了一个名为react-apollo-network-status的库,它正好处理这个用例。如果对你有用就告诉我!

通过在操作上设置可在错误链接中读取的上下文变量来实现用于在本地处理某些错误的选入/退出行为。

 类似资料:
  • 我想要一些关于如何实现以下目标的建议。我不提供代码,因为我的问题是理论上的,但应要求我可以。所以情况是这样的: 我有多个控制器,每个控制器都可以抛出XYException 我有一个@ControllerAdvice类,其中有一个@ExceptionHandler监视XYExceptions。当它发生时,它打印出“xy”。 在一个(且仅有一个)控制器中,当抛出XYException时,我希望执行一些

  • 概述 轻应用/订阅号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。 错误码 通用错误码 参数 说明 -1 系统繁忙. 0 请求成功. 40001 获取access_token时AppSecret错误,或者access_token无效. 40002 不合法的凭证类型 40003 不合法的openid 40004 不合法的媒体文件类型 40005 不合法的文件

  • 我使用spring-boot-starter-amqp1.4.2.Producer和消费者工作正常,但有时传入的JSON消息语法不正确。这会导致以下(正确)异常: 未来我可能会面临更多的例外。因此,我想配置一个全局错误处理程序,这样,如果任何一个消费者中存在任何异常,我就可以全局处理它。 注意:在这种情况下,消息根本没有到达消费者。我想在消费者中全局处理这类异常。 请找到以下代码: RabbitC

  • 主要内容:局部变量,全局变量,局部变量和全局变量的综合示例在《 C语言形参和实参的区别》中提到,形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。 所谓 作用域( Scope ) ,就是变量的有效范围。 不仅对于形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。 局部变量 定义在函数内部的变量称为 局部变量(Local Variable) ,

  • 问题内容: 我想全局拦截某些错误情况,以防止控制器自己处理错误。我认为我需要HTTP拦截器,但是我不确定如何从我的控制器中处理错误。 我有一个像这样的控制器: 和这样的HTTP拦截器: 这与浏览器重定向到“ /错误”路径一样有效。但在承诺抓的 也 执行了,我不希望这样。 我知道我可以编写代码,使其忽略404错误,但这是无法维护的。假设我进行修改以同时处理500个错误,那么我将不得不再次进行修改(以

  • 问题内容: 当我的网站是100%jQuery时,我曾经这样做: 为401错误设置全局处理程序。现在,我将angularjs与和一起使用,以向服务器发送(REST)请求。有什么办法可以类似地用角度设置全局错误处理程序吗? 问题答案: 我还在建立一个带有angular的网站,并且遇到了同样的障碍来处理全局401。当我遇到此博客文章时,我最终使用了HTTP拦截器。也许您会发现它和我一样有用。 “基于An