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

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


猜你喜欢

  • Babel 在编译 Class 时的问题及解决方法

    作为一项底层技术,Babel 为前端开发者提供了强大的能力,让我们能够在项目中使用最新的 JavaScript 语言特性,而不用为了保证代码在浏览器中正常工作而妥协。

    1 年前
  • Vue.js 中实现无限滚动加载数据的方法

    当我们需要在前端页面上展示大量数据时,一次性加载所有数据可能会导致页面卡顿,甚至崩溃。这时候,无限滚动加载数据的方式会逐渐成为常见的解决方法。Vue.js 提供了一些方便的工具和技术来实现这种效果。

    1 年前
  • Jest + React + Enzyme 最佳实践分享

    在前端开发中,测试是非常重要的一部分。Jest、React、Enzyme 是三个在前端测试中非常流行的工具。Jest 是 Facebook 开源的一个 JavaScript 测试框架,React 是 ...

    1 年前
  • ES11 中的 String.prototype.replaceAll 方法解决 JavaScript 中字符串匹配问题

    随着前端应用的不断发展,字符串匹配成为开发中常常遇到的问题。在 JavaScript 中,字符串匹配早已经有了相应的方法,例如 String.prototype.split、String.protot...

    1 年前
  • Tailwind CSS 中的边距问题及解决方法

    Tailwind CSS 是一款流行的 CSS 框架,它以 CSS 类作为组件样式的基础,可以让开发者快速构建现代化的界面。然而,在实际应用中,使用 Tailwind CSS 经常会遇到边距相关的问题...

    1 年前
  • ES7 中新增的函数参数默认值详解

    ES7 中新增的函数参数默认值是一项非常强大的特性,可以方便地为函数参数设置默认值。这对于前端开发者来说非常有用,因为他们经常需要编写大量较复杂的代码,并且需要使用多个参数的功能。

    1 年前
  • 如何在 Web Components 中使用 AJAX 请求?

    Web 组件是一种可重用的 Web 界面元素,在前端开发中越来越受欢迎。与 React、Vue 等框架相比,Web 组件更具有独立性和灵活性。然而,在 Web 组件中使用 AJAX 请求是一项需要特别...

    1 年前
  • RxJS 6 中的 Pipeable 操作符

    RxJS 是一个功能强大的响应式编程库,它可以让开发者更轻松地构建复杂的异步应用程序。RxJS 6 引入了 Pipeable 操作符,它可以让代码更加模块化、可读性更好,并且更易于维护。

    1 年前
  • 使用 Mongoose 实现 MongoDB 数据的备份和恢复

    使用 Mongoose 实现 MongoDB 数据的备份和恢复 MongoDB 是目前非常流行的 NoSQL 数据库,其使用方便,操作简单。在开发过程中,MongoDB 数据的备份和恢复非常重要,因为...

    1 年前
  • 常见的 Node RESTful API 设计误区与优化方法

    RESTful API 是一种广泛应用于 Web 开发和移动应用开发的基于 HTTP 协议的 API 设计规范。在 Node 应用中使用 RESTful API 设计,可以方便实现数据的增删改查等操作...

    1 年前
  • Sequelize 线程池配置指南

    Sequelize 是一个很受欢迎的 Node.js ORM 库,它支持多种数据库,包括 MySQL、PostgreSQL、SQLite、MSSQL 等等。在使用 Sequelize 进行数据库操作时...

    1 年前
  • ES6 中 try-catch 语句有了变化,你知道吗?

    前端开发中使用 try-catch 语句是很常见的,它可以用来捕获代码中的异常情况,让代码更加健壮。在 ECMAScript 6(以下简称 ES6)中,try-catch 语句有了一些变化,本文将详细...

    1 年前
  • 解决 Angular 4 中的 “Can't bind to 'ngModel' since it isn't a known property” 问题

    在 Angular 4 开发过程中,经常会遇到这样的错误提示:“Can't bind to 'ngModel' since it isn't a known property”。

    1 年前
  • 用 Vue.js 完成一个 SPA 应用的骨架实现

    随着前端技术的快速发展和互联网的迅猛发展,单页应用程序(SPA)已成为当今前端应用程序的首选方案之一。Vue.js 是一种非常流行的前端 JavaScript 框架,它使开发 SPA 应用程序变得更加...

    1 年前
  • 官微耗时性能优化的技巧姿势

    在现代数字化时代,官微已经成为了企业宣传、营销及客户服务的重要渠道。然而,作为前端工程师,我们必须面对官微访问量大、资源复杂的问题,而这些问题会直接影响到用户访问官微的用户体验。

    1 年前
  • Fastify 实践:如何使用 fastify-jwt 插件保护 API 接口

    Fastify 实践:如何使用 fastify-jwt 插件保护 API 接口 Fastify 是一个快速和低开销的 Web 框架,拥有广泛的生态系统和良好的文档支持。

    1 年前
  • TypeScript 中如何使用 ES6/ES7 中新增的特性

    ES6 和 ES7(ECMAScript 2015 和 ECMAScript 2016)带来了一系列新的语言特性,包括箭头函数、解构赋值、类、模板字符串、async/await 等等。

    1 年前
  • Mocha 中的 describe 和 it 方法的用法详解

    在前端开发中,经常需要测试代码的正确性和可靠性。而 Mocha 是一个常用的 JavaScript 测试框架,它提供了 describe 和 it 方法来组织和运行测试用例。

    1 年前
  • Chai 断言库:如何进行 Schema 验证?

    Chai 断言库:如何进行 Schema 验证? 在前端开发中,我们经常需要验证数据的正确性,特别是在处理用户输入或者调用接口时,数据格式的正确性尤为重要。而在 JavaScript 中,Chai 断...

    1 年前
  • Server-sent Events 如何在生产环境中使用

    简介 Server-sent Events(简称为 SSE)是 Web 开发中一种在客户端和服务器之间传输事件的机制。与 WebSocket 不同,SSE 仅支持从服务端到客户端的单向数据流。

    1 年前

相关推荐

    暂无文章