You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:44:05