Next.js 中路由的使用及参数传递

阅读时长 5 分钟读完

Next.js 是一款针对 React 应用进行服务端渲染和静态网站生成的框架,它提供了一种简单易用的路由系统,方便开发者对应用进行路由控制。本文将介绍 Next.js 中路由的基本使用和参数传递,让你在使用 Next.js 开发时更加得心应手。

基本路由

Next.js 的路由系统默认使用文件系统结构来进行路由匹配。在 pages 目录下,每一个文件都被视为一个路由页面,路由以文件路径为准。例如:

上述代码中,index.js 代表站点首页,about.js 代表关于页面,posts/index.js 代表文章列表页面,posts/post.js 代表单篇文章详情页面。

在应用运行时,浏览器地址栏中输入 http://localhost:3000 会默认打开站点首页;输入 http://localhost:3000/about 会打开关于页面;输入 http://localhost:3000/posts 会打开文章列表页面;输入 http://localhost:3000/posts/post 会打开单篇文章详情页面。

需要注意的是,Next.js 中默认使用的是 React 和 JSX,页面组件需要使用默认导出。例如:

以上代码中,Home 函数组件被默认导出,代表站点首页。页面组件支持使用 React 生命周期函数,从而实现更丰富的交互效果。

路由传参

我们在开发中,经常需要在页面之间传递参数。Next.js 路由系统提供了方便的参数传递方式,包括 3 种传递方式:query 参数、路由参数、组件参数。

Query 参数

Query 参数是指路由中的查询参数,格式为 ?key=value,可以通过 useRouter 钩子函数的 query 属性访问。

例如,在 posts/index.js 文件中,获取路由参数 categorypage,可以如下编写代码:

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

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

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

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

以上代码中,通过 useRouter 钩子函数获取 router 对象,然后使用 query 属性获取路由参数,最终展示在页面中。

在浏览器地址栏中输入 http://localhost:3000/posts?category=react&page=1,页面将展示如下信息:

路由参数

路由参数是指在路由中包含的动态参数,例如在 posts/[postId].js 文件中,参数为 postId,可以通过 useRouter 钩子函数的 query 属性访问。

例如:

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

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

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

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

在浏览器地址栏中输入 http://localhost:3000/posts/123,页面将展示如下信息:

组件参数

组件参数是在组件之间进行传递的参数,与路由系统本身无关,但是在 Next.js 应用中,由于路由系统被整合在应用中,组件参数也经常被用于路由传参。

例如,在 posts/index.js 文件中,给 PostLink 组件传递 postId 参数:

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

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

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

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

以上代码定义了 PostLink 组件,接受 postId 参数作为输入,在页面中展示 postId 和链接到相应的路由。

总结

Next.js 的路由系统提供了简单的文件系统路由匹配机制,同时支持多种参数传递方式,包括 query 参数、路由参数和组件参数。在开发 Next.js 应用时,掌握路由基础知识和参数传递方法是非常重要的,可以提高开发效率和代码质量。

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

纠错
反馈