getStaticPaths函数 以及 fallback参数

getStaticPaths是Next.js的一个静态生成API,它用于在构建时确定哪些页面需要被预渲染。它需要返回一个包含params属性的对象数组,其中每个对象都代表一个路径参数集合,可以被预渲染为一个静态页面。如果所有参数都已知,它们将被硬编码到页面中,否则Next.js将根据路径参数动态生成HTML页面。

fallback属性用于控制在未预渲染页面时的行为。它有三个可能的值:

  1. true:表示所有未定义的页面将在第一次访问时被预渲染,此时页面的Props中可能不包含任何数据。同时Next.js将生成一个"fallback"版本的页面作为占位符,一旦数据可用,将自动替换为实际的预渲染版本。此选项适用于具有大量静态页面的站点,并且可以提高构建性能和页面访问速度。

  2. false:表示如果页面未预渲染,则显示404页面。此选项适用于需要确保所有页面都是预渲染的站点。

    blocking”:表示如果页面未预渲染,则在服务端预渲染所有页面后才返回响应。此选项适用于具有大量页面的站点,并且在访问这些页面时无法使用客户端预渲染(SSR)。

    请注意,fallback属性的默认值为false,这意味着如果未提供任何值,则不允许未预渲染的页面。因此,如果您需要使用fallback,则必须显式设置该值为true或"blocking"。

总之,getStaticPaths允许您确定哪些页面需要在构建时进行预渲染,而fallback允许您控制在第一次访问时未预渲染页面的行为。这些函数可以一起使用来构建一个强大的静态站点,同时提高性能和用户体验。

incremental static regeneration (ISR)

Incremental Static Regeneration (ISR) 是 Next.js 的一项功能,它允许你在不重新生成整个页面的情况下更新部分页面内容。与传统的静态生成方式不同,ISR 可以为你的应用程序带来更快的响应速度和更好的用户体验,同时还可以减少服务器的负载。

使用 ISR 的步骤如下:

  1. 在页面组件中使用 getStaticProps 函数来获取页面的数据,并将其传递给页面组件进行渲染。在 getStaticProps 中,你需要指定页面的 revalidate 参数来启用 ISR,这个参数定义了页面在被重新生成之前需要等待多长时间,单位为秒。例如,如果你将 revalidate 设置为 10,那么 Next.js 将在页面被请求后的 10 秒内重新生成页面。
export const getStaticProps = async () => {
 const res = await fetch('https://api.example.com/data');
 const data = await res.json();

 return {
   props: {
     data,
   },
   revalidate: 10, // 页面将在 10 秒后被重新生成
 };
};


  1. 在页面组件中,使用 fallback: true 参数指定该页面是动态生成的,并且需要在第一次访问时生成。如果你有很多页面需要动态生成,可以使用 fallback: 'blocking' 参数指定页面是以阻塞方式生成的,这意味着在第一次访问时,页面将等待生成完成后再显示。这种方式可以避免在多个并发请求下同时生成页面的问题。
export const getStaticPaths = async () => {
  const res = await fetch('https://api.example.com/slugs');
  const slugs = await res.json();

  const paths = slugs.map((slug) => ({
    params: {
      slug,
    },
  }));

  return {
    paths,
    fallback: true, // 页面将在第一次访问时生成
  };
};


  1. 在 Next.js 中,你可以使用 getStaticPropsgetStaticPaths 函数来实现动态路由和 ISR。这两个函数可以为每个页面提供静态生成和数据获取的能力,而且它们非常易于使用和配置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值