Next.js中getStaticProps返回的props每次刷新页面均变化的疑问
Next.js中getStaticProps返回的props每次刷新页面均变化的疑问
嘿,我完全懂你现在的困惑!作为刚入门Next.js的新手,getStaticProps的「静态」特性确实容易让咱们产生这种误解😅。
你遇到的这个情况,核心原因其实是开发环境和生产环境的行为差异:
- 在开发模式(
npm run dev)下,Next.js为了方便咱们调试,会在每次页面请求时重新执行getStaticProps,而不是只在构建时运行一次。这就导致你页面刷新一次,Math.random()就会重新生成一个随机数,props自然跟着变了。 - 但到了生产环境就不一样了!当你执行
npm run build完成构建,再用npm start启动服务后,getStaticProps只会在构建阶段运行一次,生成的number值会被静态化到页面里。这时候不管怎么刷新页面,这个随机数都不会再改变,完全符合你预期的「静态props」特性。
你可以自己验证一下:试试构建生产版本并启动服务,刷新页面就能看到number固定下来啦。开发环境的这种“每次都重新执行”的设计,其实是Next.js为了提升开发效率,让咱们不用每次修改代码都重新构建就能看到最新结果。
附上你的示例代码方便参考:
const TestPage = ({ number }) => { return ( <div> <h1>Return Number</h1> <span>{number}</span> </div> ); }; export const getStaticProps = () => { return { props: { number: Math.random(), }, }; }; export default TestPage;
备注:内容来源于stack exchange,提问作者Hawkas
相关产品推荐
相关产品推荐

