componentDidMount 无法使用自定义 _document.js 在 NextJS 上工作

componentDidMount not working on NextJS using a custom _document.js

我正在开发一个网络应用程序的原型,我选择 NextJS 是因为我想更好地学习它,但我意识到我没有以 "standard" 的方式使用它。我从 Next + Material-UI 示例开始:https://github.com/mui-org/material-ui/tree/master/examples/nextjs 一切都很好。

但是现在,我正在尝试使用 sessionStorage 来持久化数据,但我发现如果不能在页面上使用 componentDidMount 生命周期事件就很难完成这项工作-等级。 Next 的文档说带有自定义 _document.js 文件的项目在客户端不会有 componentDidMount 方法。由于 Material-UI,我的项目使用自定义文档文件。它似乎支持 css-in-js 框架的服务器端呈现。

如果我不需要服务器端渲染,有没有办法让 Material-UI 正常工作,但取消自定义 _document.js 文件,所以我可以使用 componentDidMount 吗?

您应该可以同时使用 sessionStorage 和自定义文档。

componentDidMount(以及任何其他生命周期方法)对 _document.js 不起作用 因为这不是在客户端呈现的。

sessionStoragewindow 的一部分,因此您可以在使用 componentDidMount 生命周期的任何其他 page/component 上使用它。