MUI v5 @mui/material/styles 与 @emotion/react

pic*_*ick 21 reactjs material-ui

这是有关主题MUI v5 的问题的后续问题。尽管我的问题得到了解答,但我仍然很难理解@emotion/reactAPI 的确切位置以及何时@mui/material/styles 应该使用。我阅读了迁移指南,虽然这确实回答了一些“如何”问题,但我不了解更大的情况。

我什么时候使用MUI的造型,什么时候使用情感?为什么有两种造型解决方案?我应该使用 MUIThemeProvider还是 Emotion?有什么区别?这些问题对于有经验的用户来说可能是微不足道的,但对于刚刚入门的人来说,这些问题需要理解和理解。

Nea*_*arl 12

MUI v5使用情感作为默认风格引擎。MUI团队推荐 styled/sx自定义组件样式。在底层,它从情感中styled()调用函数(不要与 MUI 混淆),这就是情感部分相关的地方。如果您使用MUI,则无需关心情感。styledThemeProvider

关于这两个提供程序,它们唯一的共同点是名称以及将主题对象注入到子级中的能力。ThemeProvider从情感可以接受任何theme对象,并且与 MUI API 集成得不好,从这里的其他答案可以看出,因为它仅适用于情感。

MUI 中的一个具有更严格的类型,并且被框架中的大多数 MUI 组件使用,因此如果您更改 MUI 主题中的一个变量,许多 MUI 组件都会受到影响,如果您不提供任何主题,它也有默认主题

因此,如果您只使用情感而不使用 MUI,并且您想在孩子们之间分享一些样式,请使用情感的ThemeProvider. 由于您使用的是 MUI,请忽略它,因此它与此处无关。

  • @SangeetAgarwal 我的意思是情感中的“styled()”函数和 MUI 中的“styled”函数是不同的。MUI 风格是情感风格的包装。有 2 个 MUI 风格的函数,一个来自“@mui/system”,另一个来自“@mui/material”,两者在调用情感函数执行真正的工作之前都先做自己的事情。 (3认同)