在NextJS 13中使用新的app目录时,MUI是否要求所有页面都是CSR ?



我刚刚开始我的第一个NextJS应用程序,并按照本指南添加MUI。我能看到的唯一区别是我使用的是NextJS 13的实验性app目录。

当遵循指南时,我得到Uncaught TypeError: React.createContext is not a function的服务器错误,这基本上是相当清楚的,因为上下文API仅对客户端组件可用,因此可以很容易地"解决"。通过将'use client';目录放在错误组件的顶部。

不幸的是,似乎使用MUI任何部分的每个组件都需要这样做。例如,如果我想用ThemeProvider等来包装我的整个应用程序,我也必须在我的根layout.tsx中设置'use client;'

我的问题如下:

  1. 我真的有'use client;'无处不在,我想使用MUI或有一些其他的方式?
  2. 如果1是真的:这是否会使MUI与NextJS结合完全无用,因为它阻止了所有SSR, SSG, ISR优点等的使用,或者我在这里有某种误解(我对NextJS非常陌生…)?
  3. 如果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

相关内容

  • 没有找到相关文章

最新更新