Next.js 9.4.4 中 getStaticPaths 的正确使用方法

阅读时长 5 分钟读完

在 Next.js 中,getStaticPaths 方法是用来生成静态路由的,它主要用于动态路由和预渲染。在使用时,我们需要注意以下几点:

1. 什么是动态路由

动态路由是指路由参数不固定,例如 /post/1,其中的 1 是变量。通过动态路由可以模拟出多篇文章的页面,或者是用户个人主页等。在 Next.js 中,可以通过 [] 来实现动态路由的定义,例如 /post/[pid],其中的 pid 就是变量名。

2. getStaticPaths 基本用法

在定义动态路由时,我们需要在页面组件中定义 getStaticPaths 方法来生成静态路由。该方法应该返回一个对象,其中包含了所有可能的 URL 参数。例如:

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

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

以上代码中,我们利用了 fetch 方法从远程的文章列表中获取所有的文章 ID,然后通过 map 方法将文章 ID 映射到 params 对象上,最后将所有 URL 参数通过 paths 属性返回给 Next.js。fallback: false 表示 Next.js 在找不到此页面时将跳转到 404 页面。

3. getStaticPaths 深入用法

在实际应用中,我们可能会遇到需要使用数据预加载的场景,例如需要从 API 中获取评论列表。在这种情况下,我们需要对 getStaticPaths 进行深入的使用。

例如,我们需要显示文章列表页面和所有单篇文章页面以及评论列表页面。我们可以这么定义 getStaticPaths 方法:

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

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

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

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

以上代码中,我们利用了 Promise.all 方法来同时获取文章列表和评论列表,然后将每篇文章和每个评论的 URL 参数映射到 paths 属性中。需要注意的是,空对象 {} 对应的是文章列表页面。

4. 示例代码

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

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

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

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

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

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

5. 结论

在使用 getStaticPaths 方法时,需要注意数据的来源和数据处理的方法,否则会影响网站的性能和用户的体验。通过深入学习和实践,我们可以更好地理解 Next.js 中的路由生成机制。

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

纠错
反馈