跳到主要内容

generateStaticParams

generateStaticParams 函数在构建时会生成静态路由,而不是在请求时按需生成路由。

可能有人会问,使用 generateStaticParams 函数有什么好处?

  • 由于在构建构建阶段就生成了静态路由,所以可以使用缓存,提升页面加载速度。
  • 同时,相比于动态路由,静态路由可以提升路由匹配的效率。

单个路由段

app/blog/[slug]/layout.js
export async function generateStaticParams() {
const posts = await fetch('https://.../posts').then((res) => res.json())

return posts.map((post) => ({
slug: post.slug,
}))
}

export default function Layout({ params }) {
const { slug } = params
}

嵌套路由段

app/products/[category]/[product].js
export function generateStaticParams() {
return [
{ category: 'a', product: '1' },
{ category: 'b', product: '2' },
{ category: 'c', product: '3' },
]
}

// - /products/a/1
// - /products/b/2
// - /products/c/3
export default function Page({params}) {
const { category, product } = params
// ...
}