我刚刚开始我的第一个NextJS应用程序,并按照本指南添加MUI。我能看到的唯一区别是我使用的是NextJS 13的实验性app
目录。
当遵循指南时,我得到Uncaught TypeError: React.createContext is not a function
的服务器错误,这基本上是相当清楚的,因为上下文API仅对客户端组件可用,因此可以很容易地"解决"。通过将'use client';
目录放在错误组件的顶部。
不幸的是,似乎使用MUI任何部分的每个组件都需要这样做。例如,如果我想用ThemeProvider
等来包装我的整个应用程序,我也必须在我的根layout.tsx
中设置'use client;'
。
我的问题如下:
- 我真的有
'use client;'
无处不在,我想使用MUI或有一些其他的方式? - 如果1是真的:这是否会使MUI与NextJS结合完全无用,因为它阻止了所有SSR, SSG, ISR优点等的使用,或者我在这里有某种误解(我对NextJS非常陌生…)?
- 如果1 &是否有其他值得推荐的UI框架或库,它们提供了一套良好的"准备使用";(和开箱即用的好看的)控件,组件等工作更好与NextJS没有这些限制?
供参考,我在ATM上安装了以下版本:
next@13.0.6
@mui/material@5.10.17
更新我应该在发布问题之前更仔细地阅读NextJS beta文档:
似乎没有办法绕过这个ATM,就像在文档中所说的那样,在罚单中也提到过。
所以这回答了问题1,因为目前似乎没有绕过'use client';
的方法。
然而,我仍然非常感谢你对问题2的回答和意见。3 .
使用
时遇到同样的问题"@emotion/react": "^11.11.0",
"@emotion/server": "^11.11.0",
"@emotion/styled": "^11.11.0",
"@mui/material": "^5.13.1",
"@types/react": "18.2.0",
"@types/react-dom": "18.2.4",
"next": "13.4.3",
"react": "18.2.0",
"react-dom": "18.2.0",
"typescript": "5.0.4",
并使用下面的"new"3.
app
|-page.tsx
返回到
pages
|-index.tsx
和把我的MUI代码放在那里似乎暂时有效。
现在不要使用实验应用程序版本,它会有bug,所以我甚至不能在我的应用程序中使用Canvas