在 NextJS 应用程序中使用 React 上下文 API 是否会禁用静态站点生成器?

Does Using React Context API In NextJS App Disable Static Site Generator?

我有一些关于 nextJS 和 SSG(静态站点生成器)的问题

1 - 我想全局管理我的应用程序状态,所以我想使用 React 的上下文 api。据我了解,在下一个 js 应用程序中使用 redux 会禁用 SSG。如果我使用反应上下文 api 是否也会禁用?

2 - 我知道我可以进行服务器端渲染,但我想拥有一个从头开始创建的自定义 nodejs 服务器。我想在客户端从我的 nodeJS 服务器获取数据。这样做会禁用 SSG 并且不利于性能吗?

该文档中的 documentation will help you clarify your understanding on how Next.js handles automatic static optimization. Take a look at the caveats 以了解何时在全球范围内禁用它。

除此之外,每个单独的页面是否表现为 SSG、ISR、SSG + CSR 或 SSR 是单独页面的数据要求的问题。请参阅此 documentation 以更好地理解 Next.js 根据数据要求处理每个页面的不同方式。

现在,直接回答你的两个问题:

  1. 我找不到任何迹象表明在 Next.js 中使用 Redux 会禁用 SSG。事实上,这里 an official example using Redux 说明了 SSG 和 SSR Next.js 页面的实现。反应上下文 API 也是如此。另一方面,您完全有可能在页面中需要动态数据时同时使用 Redux / React 上下文来无意中禁用 SSG。阅读上面第二段中链接的文档以更好地理解这一点。

  2. 从自定义 NodeJS 服务器客户端获取数据不一定会禁用 SSG。如果您在每次页面加载时都需要动态数据,它将禁用 SSG。您可以选择静态生成您的页面 (SSG + CSR),然后请求您的数据客户端 post 页面加载(想想 axois / browser fetch API + loading indicator);或者,如果您需要在页面加载时立即显示数据(SSG 和 SSR),您可以使用 getStaticProps + getStaticPaths 在构建时(SSG)或 getServerSideProps 注入该数据在每个页面加载 (SSR) 上注入数据。