React Router SPA 应用中如何正确处理 404 页面

阅读时长 6 分钟读完

在 React Router SPA 应用中,404 页面的处理是一个常见的问题。当用户访问一个不存在的路由时,我们需要向用户展示一个友好的提示信息,而不是让用户看到一堆错误信息。本文将介绍如何在 React Router 中正确处理 404 页面。

什么是 404 页面

404 页面是 HTTP 协议中的一个状态码,表示客户端请求的资源不存在。在 Web 开发中,通常会将 404 页面作为一个特殊的页面来处理,向用户展示一个友好的提示信息。

在 React Router 中,当用户访问一个不存在的路由时,React Router 会根据路由规则去匹配对应的组件。如果没有匹配到任何组件,那么就会显示默认的 404 页面。

如何自定义 404 页面

React Router 提供了一个 Switch 组件,用于将多个路由组件包裹在一起,只渲染第一个匹配的组件。我们可以在 Switch 中添加一个自定义的 404 组件,用于处理所有未匹配的路由。

下面是一个示例代码:

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

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

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

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

在上面的代码中,我们定义了一个 NotFound 组件,用于显示 404 页面的内容。然后在 Switch 中添加了一个 Route,没有指定路由路径,这个路由会匹配所有未匹配的路由,并渲染 NotFound 组件。

如何处理嵌套路由的 404 页面

在使用嵌套路由时,我们需要注意在子路由中添加一个 404 页面,否则在子路由中匹配不到路由时,会跳转到父路由的 404 页面,这不是我们想要的结果。

下面是一个示例代码:

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

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

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

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

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

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

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

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

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

在上面的代码中,我们在 Home 组件和 About 组件中都添加了一个 404 页面,用于处理子路由中匹配不到路由的情况。

总结

在 React Router SPA 应用中,正确处理 404 页面是非常重要的。我们可以使用 Switch 组件和自定义的 404 组件来实现这个功能,同时在嵌套路由中,也需要注意添加子路由的 404 页面。希望本文对你有所帮助。

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

纠错
反馈