StylesProvider injectFirst 错误:元素类型无效:需要一个字符串(对于内置组件)或
Posted
技术标签:
【中文标题】StylesProvider injectFirst 错误:元素类型无效:需要一个字符串(对于内置组件)或【英文标题】:StylesProvider injectFirst Error: Element type is invalid: expected a string (for built-in components) or 【发布时间】:2021-09-16 15:38:17 【问题描述】:nextjs + 材质界面
我确定它是我忽略的基本内容,但我试图用 css 模块覆盖 mui 样式。接受的方法似乎是将组件树包装在 StylesProvider 组件中并传递给它一个 injectFirst 属性。当我这样做时,虽然它会产生错误
*Error: Element type is invalid: expected a string (for built-in components) or*
这是使用 nextjs。 Package.json 看起来像:
@emotion/cache 11.4.0 @emotion/react 11.4.0 @emotion/server 11.4.0 @emotion/styled 11.3.0 @material-ui/core 5.0.0-beta.0 clsx 1.1.1 下一个 11.0.1 道具类型 15.7.2 反应 17.0.2 react-dom 17.0.2有一个codesandbox,您可以在其中实时查看错误并检查代码。任何想法都欣然接受。
【问题讨论】:
【参考方案1】:Material UI 在 v5 中开始使用情感作为样式库,因此根据 migration guide,正确使用的组件是 StyledEngineProvider。像这样:
import * as React from 'react';
import StyledEngineProvider from '@material-ui/core/styles';
export default function GlobalCssPriority()
return (
<StyledEngineProvider injectFirst>
/* Your component tree. Now you can override Material-UI's styles. */
</StyledEngineProvider>
);
【讨论】:
以上是关于StylesProvider injectFirst 错误:元素类型无效:需要一个字符串(对于内置组件)或的主要内容,如果未能解决你的问题,请参考以下文章