(Material UI / Next.js) 从服务器端渲染停止 useStyles

(Material UI / Next.js) Stop useStyles from Server Side Rendering

我目前正在我的应用程序中的一个页面上工作,该页面需要访问有关样式的 window 对象。

我知道对于不应在服务器上呈现的组件,只需使用 <NoSsr> 即可。但是当从 useStyles 访问 window 时,它会在 render() 函数之前调用。意思是一旦 classes=useStyles() 被击中错误:ReferenceError: window is not defined 仍然存在。

知道如何阻止 useStyles 调用在服务器上呈现吗?

谢谢!

(自己回答)

找到适用于此上下文的解决方案:

  1. 在应该有权访问全局 window 对象的组件周围使用 <NoSSr>

  2. 在对象上使用 style={{}} 而不是使用 useStyles()className 的全局样式。

  3. 如果需要访问主题,请使用 const theme = useTheme() importend from @material-ui/styles