Next.js 中遇到路由 404 错误怎么办

在使用 Next.js 进行开发时,我们经常会遇到路由 404 错误的情况。这种情况通常是因为路由配置不正确或者页面组件不存在导致的。本文将详细介绍在 Next.js 中遇到路由 404 错误的处理方法。

路由配置

在 Next.js 中,路由配置是通过 pages 目录下的文件名和文件夹来实现的。例如,如果我们需要创建一个名为 /about 的页面,我们可以在 pages 目录下创建一个名为 about.js 的文件。

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

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

在上面的例子中,我们创建了一个名为 About 的组件,并将其导出为默认组件。这样,我们就可以通过 /about 访问到这个页面了。

动态路由

除了静态路由,Next.js 还支持动态路由。动态路由可以根据不同的参数生成不同的路由。例如,我们可以通过 /posts/1/posts/2 访问到不同的博客文章。

在 Next.js 中,动态路由的文件名需要以方括号 [] 开头。例如,我们可以创建一个名为 posts/[id].js 的文件,来实现动态路由。

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

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

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

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

在上面的例子中,我们使用了 useRouter 钩子来获取路由参数。通过 router.query 可以获取到动态路由中的参数。例如,当我们访问 /posts/1 时,router.query.id 的值为 1

处理路由 404 错误

当我们访问一个不存在的路由时,Next.js 会自动显示 404 页面。但是,在某些情况下,我们可能需要自定义 404 页面的样式或者显示其他内容。在这种情况下,我们可以使用 Next.js 提供的 getStaticProps 或者 getServerSideProps 函数来处理路由 404 错误。

getStaticProps

getStaticProps 函数用于在构建时获取静态数据。如果我们需要显示一个静态的 404 页面,我们可以在 pages/404.js 文件中使用 getStaticProps 函数来获取静态数据。

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

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

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

在上面的例子中,我们通过 getStaticProps 函数返回了一个空的对象。这样,我们就可以在 Custom404 组件中显示自定义的 404 页面了。

getServerSideProps

getServerSideProps 函数用于在每次请求时获取数据。如果我们需要显示一个动态的 404 页面,我们可以在 pages/404.js 文件中使用 getServerSideProps 函数来获取动态数据。

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

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

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

在上面的例子中,我们通过 getServerSideProps 函数返回了一个空的对象。这样,我们就可以在 Custom404 组件中显示自定义的 404 页面了。

总结

在 Next.js 中遇到路由 404 错误时,我们可以通过正确的路由配置和使用 getStaticProps 或者 getServerSideProps 函数来处理。同时,我们还可以创建自定义的 404 页面来提高用户体验。

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