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

标签 reactjs material-ui next.js

我正在开发一个网络应用程序的原型(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因为这不是呈现客户端。

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

关于reactjs - componentDidMount 无法使用自定义 _document.js 在 NextJS 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690449/

相关文章:

material-design - 在 react 原生 iOS 应用程序中使用 Material 设计的最简单方法是什么?

android - 如何从 jetpack compose 更改 OutlinedTextField 的轮廓颜色?

javascript - 如何在 NextJs 中缓存字体?

javascript - Next.js 在 getInitialProps 中返回 404 错误页面

next.js - Nextjs 页面在刷新时转到 404

reactjs - 在 Apollo 客户端中使用 Auth0 的 hook useAuth0 获取 token 并设置 header

reactjs - 默认禁用按钮单击事件不会在 reactjs 上触发

reactjs - 如何将后端 Go 服务器链接到前端 ReactJS?

reactjs - 使用 react-router v4 测试安装的组件

reactjs - Material DateTimePicker onChange Typescript 不匹配错误