componentDidMount无法使用自定义_document.js在NextJS上运行

时间:2020-01-10 23:59:11

标签: reactjs material-ui next.js

我正在开发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

1 个答案:

答案 0 :(得分:-1)

同时使用sessionStorage和自定义文档应该没问题。

componentDidMount(以及任何其他生命周期方法)不适用于_document.js,仅,因为这不是客户端。

sessionStoragewindow的一部分,因此可以使用componentDidMount生命周期在其他任何页面/组件上使用它。