将 GraphQL 查询和反应错误处理到同一个地方

许多前端应用程序都使用 GraphQL 来获取后端数据。在执行 GraphQL 查询时,我们经常需要处理错误并与我们的用户进行交互。通常,我们将错误处理逻辑集成到各个组件中,这样就很难维护。在本文中,我们将学习如何将 GraphQL 查询和错误处理集成到同一个地方,从而使代码更加简单和易于维护。

错误处理

在使用 GraphQL 时,许多种类的错误可能会发生。例如,查询可能无法正确解析,无法连接到服务器,因为没有足够的权限而被拒绝,等等。在 GraphQL 中,错误处理非常灵活,您可以使用错误对象 (Error Object) 来表示任何类型的错误。

以下是一个处理 GraphQL 错误的示例:

--- -
  ----- ------ - ----- --------------- ------ --- --- -----------
  ------ -------
- ----- --- -
  ---------------
  ------ - ------- --- --
-

在上面的代码中,我们调用了 graphql 方法来执行 GraphQL 查询。如果查询出现任何错误,我们就会通过调用 catch 子句来捕获错误,并将该错误添加到错误数组中。然后,我们返回包含错误数组的对象。

您可以使用任何适用于您的项目的错误处理方法。例如,您可以将错误记录到日志文件中,将其显示在用户界面中,或以其他任何方式处理错误。

将查询和错误处理集成在一起

如果您在前端应用程序中多次执行 GraphQL 查询,则很容易让您的代码变得复杂。如果您使用前面的方法仅仅是将错误处理集成到每个单独的查询中,那么您将不得不在每个查询处重新实现该逻辑,并且您的代码将会变得重复和难以维护。

幸运的是,GraphQL 提供了一个称为 useQuery 的钩子,可以用来执行查询,并自动处理错误。使用 useQuery,您可以将查询和错误处理逻辑集成在一个文件中,从而使您的代码变得更加清晰和易于维护。

以下是使用 useQuery 的示例:

----- - -------- ------ ---- - - --------------- ---------

-- --------- ------ ------------------
-- ------- ------ -------- -------

------ ------------------

在上面的代码中,我们使用 useQuery 钩子来执行 GraphQL 查询。useQuery 接受两个参数:一个查询字符串和一些选项。它返回三个变量:loadingerrordata。当查询正在加载时,loading 变量为 true。如果查询失败,则 error 变量包含一个错误对象。 data 变量包含从 GraphQL 服务器获取的数据。

这样,我们就可以在一个文件中执行查询并处理结果,从而简化了代码并使其易于维护。

示例

以下是一个完整的示例,说明了如何执行 GraphQL 查询并将错误处理集成到同一个文件中。

------ - --------- --- - ---- -----------------
------ ----- ---- --------

----- --------- - ----
  ----- -------- -
    ----- -
      ------
      ------
    -
  -
--

-------- ------- -
  ----- - -------- ------ ---- - - --------------------

  -- --------- ------ ------------------
  -- ------- ------ -------- -------

  ------ -
    -----
      ------------------ ------ ------ -- -- -
        ---- ------------
          --------------
          ---------------
        ------
      ---
    ------
  --
-

在上面的示例中,我们使用 useQuery 来执行名为 getBooks 的 GraphQL 查询。如果该查询失败,则使用错误处理逻辑来显示错误消息。如果该查询成功,则使用返回的数据来渲染组件。

结论

在本文中,我们学习了如何将 GraphQL 查询和错误处理集成到同一个文件中。通过使用 useQuery 来执行查询和处理错误,我们可以使我们的代码更加简单和易于维护。希望这篇文章可以帮助您在开发前端应用程序时处理 GraphQL 查询和错误。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67358bcb0bc820c5824f0a1e