静态生成 可以带有或不带数据。
到目前为止,我们创建的所有页面都不需要获取外部数据。这些页面将在应用构建为生产环境时自动进行静态生成。
但是,对于某些页面,你可能无法在不先获取一些外部数据的情况下渲染 HTML。也许你需要在构建时访问文件系统、获取外部 API 或查询你的数据库。Next.js 支持这种情况 - 带有数据的静态生成 - 开箱即用。
getStaticProps
进行静态生成它是如何工作的?在 Next.js 中,当你导出页面组件时,你还可以导出一个名为 getStaticProps
的 async
函数。如果你这样做,那么
getStaticProps
在生产环境的构建时运行,并且…export default function Home(props) { ... }
export async function getStaticProps() {
// Get external data from the file system, API, DB, etc.
const data = ...
// The value of the `props` key will be
// passed to the `Home` component
return {
props: ...
}
}
从本质上讲,getStaticProps
允许你告诉 Next.js:“嗨,此页面有一些数据依赖项 - 因此,当你在构建时预渲染此页面时,请确保先解析它们!”
**注意**:在开发模式下,
getStaticProps
在每次请求时运行。
getStaticProps
实践出真知,因此从下一页开始,我们将使用 getStaticProps
来实现我们的博客。