Требует ли MUI, чтобы все страницы были CSR при использовании нового каталога приложений в NextJS 13?
Я только что запустил свое первое приложение NextJS и следовал этому руководству , чтобы добавить MUI. Единственная разница, которую я вижу, это то, что я использую экспериментальныйapp
каталог NextJS 13.
Следуя руководству, я получаю сообщение об ошибке сервераUncaught TypeError: React.createContext is not a function
что в основном довольно ясно, поскольку контекстный API доступен только для клиентских компонентов и поэтому может быть довольно легко «решен», поместив каталог поверх ошибочного компонента.
К сожалению, похоже, что это требуется для каждого компонента, который использует любую часть MUI. Например, я также должен был бы в моем корнеlayout.tsx
если я хочу обернуть все свое приложениеThemeProvider
и т. д.
Мои вопросы следующие:
- Я действительно должен
'use client;'
везде я хотел бы использовать MUI или есть какой-то другой способ? - Если 1 верно: не делает ли это MUI совершенно бесполезным в сочетании с NextJS, поскольку он предотвращает использование всех преимуществ SSR, SSG, ISR и т. д., или у меня есть какое-то недопонимание (я очень новичок в NextJS в общий...)?
- Если 1 и 2 верны: существуют ли другие рекомендуемые фреймворки или библиотеки пользовательского интерфейса, которые предоставляют хороший набор «готовых к использованию» (и готовых к использованию) элементов управления, компонентов и т. д., которые лучше работают с NextJS без этих ограничений?
К вашему сведению, у меня установлены следующие версии банкомата:
-
next@13.0.6
-
@mui/material@5.10.17
Обновлять
Я должен был более внимательно прочитать бета-документацию NextJS, прежде чем публиковать вопрос:
Похоже, что нет никакого способа обойти этот банкомат, как указано здесь, в документах , и снова здесь, в билете .
Итак, это отвечает на вопрос 1, так как, похоже, нет пути'use client';
на данный момент.
Тем не менее, я все равно был бы очень признателен за ответы и мнения по вопросам 2 и 3.
2 ответа
Столкнулся с той же проблемой, используя
"@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",
И используя приведенную ниже «новую» парадигму с nextjs13.
app
|-page.tsx
Возвращаясь обратно к
pages
|-index.tsx
и размещение там моего кода MUI, похоже, пока работает.
Не используйте экспериментальную версию приложения, она будет глючить, так как я даже не могу использовать Canvas в своем приложении.