我知道该主题不是新话题,我发现(并阅读了)一些讨论。我找不到的是仍然存在的问题的答案。
其他人如何解决_app.js中无法使用getStaticProps的问题?我无法使用 getInitialProps ,因为我想使用 SSG 。即使使用getInitialProps,有没有一种强制SSG的方法?还是我真的必须从每页的Headless CMS中获取所有数据?例如,由于我要构建页眉(包括导航)和页脚。目前,我看到的唯一选择是重复很多代码。
任何暗示都非常感谢,并感谢您阅读!
答案 0 :(得分:2)
Next.js 建议使用 getStaticProps 或 getServerSideProps 而不是 getInitialProps 以获得 Next.js 的最佳性能。
<块引用>如果您使用 Next.js 9.3 或更新版本,我们建议您使用 getStaticProps 或 getServerSideProps 而不是 getInitialProps。
Next.js 推荐这样做的原因是 getInitialProps 禁用了 Automatic Static Optimization 并使用了 Server-side Rendering。
在 _app.js 中使用 getInitialProps 将禁用应用程序中所有页面的自动静态优化。此外,它会强制您在每次请求时生成所有页面,因为它们使用服务器端呈现,这将导致错误的 Time to First Byte (TTFB)。
我在 Github 上制作了一个带有现场演示和代码示例的 cheat sheet about Next.js page rendering,以帮助快速了解它的工作原理。这将帮助您根据您的用例选择正确的 Next.js 页面渲染策略。