为什么在 _document.js 中使用 getInitialProps 会导致 Next.js 应用程序崩溃?

itw*_*aze 3 reactjs next.js

为什么不建议使用getInitialPropsinside_document.js进行静态渲染?为什么它可以破坏整个静态渲染呢?

比如我有几个案例:

  1. 小型电子商务网站,包含静态页面和一些动态页面
  2. 社交网络有逻辑限制,但同时我想向搜索引擎分享一些关于我们在社交网络中的个人资料和帖子的数据(内容正在实时更新)。

对于电子商务,我需要构建项目并使用getStaticProps

对于社交网络,我需要使用 SSR 和getServerSideProps

sub*_*tra 5

来自 nextjs文档

自定义文档还可以包括getInitialProps用于表达异步服务器呈现数据需求

拥有getInitialProps内部_document.js不会导致您的应用程序崩溃,但它有一些警告

getInitialProps在客户端转换期间或页面静态优化时不会调用文档的函数

getInitialProps这意味着,如果您有一些必须由in满足的数据要求,则_document.js必须采取一些预防措施,因为在客户端转换期间也不会为预渲染页面调用getInitialPropsin的函数。_document

另一项需要注意的是,当您尝试访问ctx.req内部时getInitialProps,将出现undefined预渲染页面。

您可以根据数据的需要,为应用程序的每个页面getStaticProps运行数据获取方法。getServerSideProps如果应用程序需要客户端数据获取,您可能想看看swrreact-query