当前位置: 首页 > article >正文

Next.js 学习 - 生命周期

Next.js 是一个基于 React 的框架,除了继承 React 组件的生命周期之外,还扩展了自己的数据获取和页面渲染生命周期。以下是 Next.js 生命周期的主要部分:

1. 页面初始化

Next.js 的页面组件具有独特的生命周期,因为它们可以在服务器端(SSR)和客户端渲染(CSR)中运行。

服务端渲染生命周期

当用户首次访问一个页面时,Next.js 会在服务器端预先渲染页面。这时,页面的数据获取生命周期发生在服务端。

客户端渲染生命周期

页面首次加载后,如果用户在同一个应用中导航到其他页面,页面将通过客户端渲染。这时,页面的生命周期类似于普通的 React 组件。

2. 数据获取生命周期

Next.js 提供了几个用于数据获取的函数,这些函数定义了在不同阶段如何获取页面数据:

getStaticProps
  • 何时调用:构建时(next build)。
  • 作用:用于预渲染静态页面,可以在构建时获取数据,并将其传递给页面的 props。
  • 常用场景:博客文章、产品页面等不经常变动的内容。
getStaticPaths
  • 何时调用:构建时,和 getStaticProps 搭配使用。
  • 作用:用于动态生成静态页面的路径,Next.js 会根据这个函数返回的路径预先生成静态页面。
  • 常用场景:动态路由,例如博客文章的详情页。
getServerSideProps
  • 何时调用:每次请求时。
  • 作用:在服务端获取数据,并将其传递给页面的 props。每次请求页面时,Next.js 都会调用该函数获取最新的数据。
  • 常用场景:数据变化频繁的页面,如用户个人资料页面。
getInitialProps(旧方法)
  • 何时调用:页面初始化时,无论是服务端渲染还是客户端渲染。
  • 作用:在早期版本中用于获取初始数据。它可以在服务端和客户端运行,但现在被 getStaticPropsgetServerSideProps 所取代。

3. 页面渲染

在 Next.js 中,页面渲染有三种主要方式:

  • 静态生成(Static Generation):在构建时生成静态 HTML 文件。通过 getStaticProps 获取数据并生成页面。
  • 服务器端渲染(Server-Side Rendering,SSR):每次请求时生成 HTML 文件。通过 getServerSideProps 获取数据并渲染页面。
  • 客户端渲染(Client-Side Rendering,CSR):页面首次渲染在服务器端完成,随后在客户端通过 JavaScript 动态更新页面。通常在交互频繁的应用中使用。

4. 页面加载和导航

Next.js 具有内置的客户端导航功能,通过 <Link> 组件和 next/router 可以实现无刷新导航。在导航过程中,Next.js 会通过客户端预取数据,并在 useEffect 生命周期钩子中处理页面更新。

5. API 路由

Next.js 还支持 API 路由,允许你在 pages/api 目录中创建后端 API。这些 API 路由可以处理请求并返回 JSON 数据,类似于标准的 Express 路由。

6. 增量静态再生成(ISR)

Next.js 具有一种称为 增量静态再生成(Incremental Static Regeneration, ISR)的机制,它允许你在构建后定期重新生成静态页面。你可以通过在 getStaticProps 中设置 revalidate 来指定页面重新生成的间隔时间。

总结来说,Next.js 的生命周期可以分为数据获取、页面渲染以及客户端交互三个主要阶段,并且针对不同的渲染方式提供了不同的数据获取钩子,以灵活应对静态、动态内容的需求。


http://www.kler.cn/news/357916.html

相关文章:

  • Docker技术深度解析与实战案例
  • Java中的String类
  • K8s-pod控制器HPA、DS、Job、CJ
  • 【GeekBand】C++设计模式笔记8_Factory Method_工厂方法
  • Android判断蓝牙设备类型
  • 运算符优先级有没有通用原则?
  • 在 PostgreSQL 通过Select语句中动态生成 INSERT 和 UPDATE 语句
  • uniapp获取底部导航tabbar的高度(H5)
  • AvaloniaTCP-v1.0.0:学习使用Avalonia/C#进行TCP通讯的一个简单Demo
  • 前端实现下载功能汇总(下载二进制流文件、数组下载成csv、将十六进制下载成pcap、将文件下载成zip)
  • 国庆旅游高峰期,如何利用可视化报表来展现景区、游客及消费数据
  • 大数据-168 Elasticsearch 单机云服务器部署运行 详细流程
  • R语言机器学习教程大纲
  • Win10+Python3.8+GPU版tensorflow2.x环境搭建最简流程(转载学习用)
  • ArcGIS Pro SDK (十八)栅格
  • 微前端架构及其解决方案对比
  • Windows 11 Mysql 安装及常用命令
  • excel判断某一列(A列)中的数据是否在另一列(B列)中
  • Redis Time Series 数据结构详解与Java实现
  • 浅谈分布式架构