通常在 v4 中,您可以从以下位置导入样式 API@material-ui/core/styles
。这个在幕后使用 JSS:
import { makeStyles } from '@material-ui/core/styles';
在 v5 中,他们品牌名称更改为MUI https://github.com/mui-org/material-ui/issues/27666。结果,包名也发生了变化:
import { makeStyles } from '@mui/material/styles';
但 MUI v5 也放弃了对 JSS 的支持(makeStyles
/withStyles
正在使用),因此他们将这些 API 移动到一个名为@mui/styles
。 (他们计划在 v6 中删除这个 API,但有一些阻力。请参阅this https://github.com/mui-org/material-ui/issues/26571问题以获取更多信息)
import { makeStyles } from '@mui/styles';
并鼓励用户采用更新的造型解决方案(sx
, styled
)使用情感作为默认样式引擎:
import { styled } from "@mui/material/styles";
综上所述,两者之间的区别@mui/material/styles
and @mui/styles
就是它:
@mui/styles https://mui.com/styles/basics/#main-content |
@mui/material/styles |
Doesn't come with a default theme, need createTheme / ThemeProvider
|
Come with a default material theme (as opposed to the other planned theme https://github.com/mui-org/material-ui/issues/27825#issuecomment-921377969) |
Legacy styling package |
Depends on the new @mui/system https://mui.com/system/basics/#main-content package |
Powered by JSS |
Powered by emotion (as a default style engine) |
Has makeStyles /withStyles
|
Doesn't have makeStyles /withStyles , has styled instead |
你不应该混合@mui/styles
with @mui/material/styles
。选择一种样式解决方案并坚持使用它,因为来自不同样式库的重复类名可能会导致意外的副作用和难以发现的错误。如果您正在创建一个新项目或有一个小型 v4 项目,我建议完全迁移到情感解决方案,以避免添加额外的包大小,因为 MUI 组件在新版本中不再使用情感,而不是 JSS。
参考
- https://mui.com/styles/basics/#main-content https://mui.com/styles/basics/#main-content
- https://mui.com/guides/migration-v4/#heading-mui-material-styles https://mui.com/guides/migration-v4/#heading-mui-material-styles