我正在开发一个网络应用程序的原型(prototype),我选择 NextJS 是因为我想更好地学习它,但我意识到我并没有以“标准”方式使用它。我从这里的 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
因为这不是呈现客户端。
sessionStorage
是 window
的一部分所以你可以在使用 componentDidMount
的任何其他页面/组件上使用它生命周期。
关于reactjs - componentDidMount 无法使用自定义 _document.js 在 NextJS 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690449/