Next.js中仅渲染无props/动态数据的静态JSX时,getStaticProps是否生效?
关于Next.js纯静态页面使用getStaticProps的问题
完全可以照常预渲染并交付给客户端,哪怕getStaticProps不返回任何props,Next.js依然会正常执行静态生成(SSG)流程。
核心逻辑说明
getStaticProps的核心作用之一是触发页面的静态生成——只要你的页面组件导出了这个异步函数,Next.js就会在构建阶段预渲染该页面为完整的HTML文件,不管函数内部是否获取数据、是否返回props。即使返回空的props对象,预渲染流程也不受影响。
示例代码验证
比如一个纯静态页面:
export default function StaticPage() { return <h1>这是纯静态内容</h1>; } export async function getStaticProps() { // 即使不返回props(或返回空对象),依然会触发静态预渲染 return { props: {} }; }
确认是否正常工作的方法
- 执行
next build构建项目,查看.next/server/pages目录下对应页面的文件,会生成对应的.html和.json文件(.json内容为空,但存在)。 - 启动服务
next start,访问页面后右键查看页面源代码,如果能直接看到渲染好的<h1>这是纯静态内容</h1>,说明预渲染已经成功完成,客户端收到的是完整的静态HTML。
额外补充
如果页面完全没有服务端数据需求,其实可以不用写getStaticProps——Next.js默认会对纯静态页面自动执行静态生成。但如果显式写了getStaticProps(哪怕返回空props),也不会有任何问题,只是组件会接收到一个空的props对象而已。
内容的提问来源于stack exchange,提问作者Ahsan Sium
相关产品推荐
相关产品推荐

