如何在 Next.js 中使用 Apollo Client 进行 GraphQL 数据获取?

阅读时长 6 分钟读完

在现代 Web 开发中,GraphQL 是一个备受瞩目的技术,它能够帮助开发者更加高效地获取数据。而在 React 生态圈中,Apollo Client 是一个广受欢迎的 GraphQL 客户端库,它提供了很多便捷的功能,如缓存、预取等。本文将介绍如何在 Next.js 中使用 Apollo Client 进行 GraphQL 数据获取。

准备工作

在开始之前,需要先安装 Node.js 和 npm。然后,我们可以使用 create-next-app 创建一个新的 Next.js 应用:

接着,我们需要安装一些依赖:

设置 Apollo Client

在 Next.js 中使用 Apollo Client 需要进行一些配置。我们可以在 pages/_app.js 文件中进行配置,这样可以确保所有页面都能使用 Apollo Client。

首先,需要引入 ApolloClient 和 InMemoryCache:

然后,在 _app.js 文件中创建一个 Apollo Client 实例,并将其作为 props 传递给子组件:

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

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

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

在这里,我们通过 uri 属性指定了 GraphQL API 的地址,并创建了一个 InMemoryCache 实例作为缓存。

查询数据

现在,我们已经设置好了 Apollo Client,可以开始查询数据了。我们可以在页面组件中使用 useQuery Hook 来查询数据。

例如,我们可以查询一个博客列表:

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

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

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

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

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

在这里,我们使用了 useQuery Hook 来查询一个名为 blogs 的字段,它返回一个包含 id、title、content 属性的数组。如果加载中,我们显示 "Loading...",如果出错,我们显示 "Error :(",否则,我们遍历数据并将其渲染到页面上。

变更数据

除了查询数据,我们还可以使用 useMutation Hook 来变更数据。例如,我们可以添加一篇新的博客:

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

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

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

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

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

在这里,我们使用 useMutation Hook 来定义一个名为 addBlog 的函数,它接受 title 和 content 两个参数,并返回一个包含 id、title、content 属性的对象。然后,我们使用一个表单来提交数据,通过调用 addBlog 函数来添加一篇新的博客。

结论

在本文中,我们介绍了如何在 Next.js 中使用 Apollo Client 进行 GraphQL 数据获取。我们首先设置了 Apollo Client,然后使用 useQuery Hook 查询数据,使用 useMutation Hook 变更数据。希望这篇文章能够帮助你更好地使用 GraphQL 和 Apollo Client,提高开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676402aa856ee0c1d425982d

纠错
反馈