(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 调用在服务器上呈现吗?
谢谢!
(自己回答)
找到适用于此上下文的解决方案:
在应该有权访问全局 window 对象的组件周围使用 <NoSSr>
。
在对象上使用 style={{}}
而不是使用 useStyles()
和 className
的全局样式。
如果需要访问主题,请使用 const theme = useTheme()
importend from @material-ui/styles
我目前正在我的应用程序中的一个页面上工作,该页面需要访问有关样式的 window 对象。
我知道对于不应在服务器上呈现的组件,只需使用 <NoSsr>
即可。但是当从 useStyles 访问 window 时,它会在 render()
函数之前调用。意思是一旦 classes=useStyles()
被击中错误:ReferenceError: window is not defined
仍然存在。
知道如何阻止 useStyles 调用在服务器上呈现吗?
谢谢!
(自己回答)
找到适用于此上下文的解决方案:
在应该有权访问全局 window 对象的组件周围使用
<NoSSr>
。在对象上使用
style={{}}
而不是使用useStyles()
和className
的全局样式。如果需要访问主题,请使用
const theme = useTheme()
importend from@material-ui/styles