next.js 如果使用getStaticProps,如何从CMS获取更新的数据?

vxbzzdmp  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(139)

我正在从getStaticProps内的CMS获取博客。现在,我在CMS中的博客中进行了更改,但更新的数据没有显示出来,因为getStaticProps只在build时间内获取此数据。有没有办法在没有build的情况下重新获取更新的数据?
我一个月只更新一两次博客,这就是为什么我觉得getServerSideProps可能不是正确的选择。
我很困惑。
我试着研究它,但没有找到任何答案。对于markdown,getStaticProps是有意义的,因为我们在存储库中进行了更改,它再次构建,但对于CMS,我不知道如何获取更新的数据。

eqfvzcg8

eqfvzcg81#

您可以使用revalidate prop在特定时间间隔后加载新数据(在您的情况下 * 一个月一次或两次 *)
示例:

export async function getStaticProps() {
  const res = await fetch('https://.../posts')
  const posts = await res.json()
 
  return {
    props: {
      posts,
    },
    // Next.js will attempt to re-generate the page:
    // - When a request comes in
    // - At most once every 10 seconds
    revalidate: 10, // In seconds
  }

}
请记住,如果你想要Incremental Static Regeneration(上面解释的getStaticPropsrevalidate标志),那么你需要运行Next.js服务器(next start命令),没有服务器就没有什么可以执行请求,更新数据和生成新的静态文件。
next export只生成一次静态文件,使用构建时可用的数据。

相关问题