如何使用 Apollo 集成 GraphQL 到 React 应用程序中

GraphQL 是一种新兴的 API 查询语言,它可以让你更好地组织和获取你的应用程序数据。它可以减少网络请求的数量,并且可以适应复杂的查询。

Apollo 是一个开源的客户端库,它提供了一个现代的、功能强大的 GraphQL 客户端,它可以帮助你轻松地将 GraphQL 集成到你的 React 应用程序中。在这篇文章中,我们将深入探讨如何使用 Apollo 集成 GraphQL 到 React 应用程序中,包括以下内容:

  • 安装 Apollo 客户端
  • 定义 GraphQL 查询
  • 将查询集成到 React 组件中
  • 处理加载状态和错误
  • 在应用程序中使用 Mutations

安装 Apollo 客户端

首先,我们需要安装 apollo-boostreact-apollo,这两个包可以让我们更容易地开始使用 Apollo。

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

如果你正在使用 TypeScript,你还需要安装 @types/react-apollo

定义 GraphQL 查询

定义 GraphQL 查询是使用 Apollo 的第一步。我们可以将查询定义为字符串,也可以使用 GraphQL 语法树。

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

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

在这个例子中,我们定义了一个查询来获取所有图书的标题和作者。我们使用 gql 标签将查询字符串转换为一个可执行的查询。

将查询集成到 React 组件中

在 React 中使用 GraphQL 查询非常容易。我们可以使用 Query 组件来包装我们的组件并获取数据。

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

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

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

在这个例子中,我们将 GET_BOOKS 查询传递给 Query 组件,并使用 loadingerrordata 来处理加载状态和数据。如果加载中,我们将返回“Loading...”;如果出现错误,我们将返回“Error :(”;如果查询完成,我们将使用 map 将所有图书的标题和作者渲染到页面上。

处理加载状态和错误

在上面的例子中,我们使用 loadingerror 属性来处理加载状态和错误。如果我们需要更细粒度的控制,我们可以使用 ApolloProvidergraphql

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

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

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

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

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

在这个例子中,我们使用 graphql 高阶函数将 GET_BOOKS 查询注入到 BookList 组件中。我们可以直接从组件的属性中访问查询结果,而不需要使用 <Query> 组件。这使得代码变得更简洁,同时也可以更容易地控制加载状态和错误。

在应用程序中使用 Mutations

除了查询外,在应用程序中使用 Mutations 也是很常见的。我们可以使用 Mutation 组件来处理 Mutations。

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

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

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

在这个例子中,我们定义了一个添加图书的 Mutation,并用 update 函数更新了缓存。我们将添加的图书与所有现有的图书合并,并将结果写回缓存。使用 Mutation 组件来处理 Mutations 很容易,它和 Query 组件非常相似。

结论

在本文中,我们深入探讨了如何使用 Apollo 集成 GraphQL 到 React 应用程序中。我们讨论了如何定义 GraphQL 查询、将查询集成到 React 组件中,并处理加载状态和错误。我们还学习了如何使用 Mutations 来更新数据。

Apollo 提供了一个功能强大的 GraphQL 客户端,在开始构建 GraphQL 应用程序时应该考虑使用它。如果您正在使用 React,那么 Apollo 将是一个很好的选择。

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