我正在开发Web应用程序的原型,我选择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
?
答案 0 :(得分:-1)
同时使用sessionStorage
和自定义文档应该没问题。
componentDidMount
(以及任何其他生命周期方法)不适用于_document.js
,仅仅,因为这不是客户端。
sessionStorage
是window
的一部分,因此可以使用componentDidMount
生命周期在其他任何页面/组件上使用它。