You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MUI版本增量迁移期间使用JSS makeStyles/withStyles的疑问

关于MUI v4到v5迁移中JSS样式导入的问题解答

1. @material-ui/core/styles 和 @mui/styles 导入 makeStyles/withStyles 的区别

  • 核心功能一致:两者都是基于JSS的样式创建工具,语法和基础用法几乎没区别,都能生成组件级的JSS样式。
  • 绑定的主题系统不同:
    • @material-ui/core/styles 是MUI v4的内置方案,完全适配v4的主题结构(比如主题内palette、typography的字段定义逻辑)。
    • @mui/styles 是v5中为兼容JSS单独抽离的包,它默认适配v5的主题结构,同时也能兼容v4主题,但如果项目里混用v5组件和v4主题,用它能减少主题不匹配引发的样式异常。
  • 维护状态不同:@material-ui/core/styles 随v4停止维护不再更新,@mui/styles在v5生命周期内会做bug修复,但不会新增功能(因为v5主推Emotion作为样式方案)。

2. 移除@material-ui/core前是否完全不需要@mui/styles

不是完全不需要,分两种场景:

  • 如果项目目前仍以v4组件、v4主题为主,继续用@material-ui/core/styles完全没问题,不需要切换到@mui/styles。
  • 但如果已经开始引入v5组件,且需要在这些v5组件中使用JSS样式,或者想让JSS样式适配v5主题,那么@mui/styles会更合适——它能更好地和v5的主题系统协同,避免v4/v5主题结构差异导致的样式问题。

3. 直接迁移到MUI v6的话,答案会有什么不同

MUI v6已经彻底移除了对JSS的官方支持,不管是@material-ui/core/styles还是@mui/styles里的makeStyles/withStyles,在v6中都不再被推荐使用。

v6默认采用Emotion作为样式方案,官方要求把所有JSS代码迁移为:

  • 使用@mui/material/styles中的styled API创建样式化组件
  • 直接使用组件的sx prop编写内联样式
  • 借助@mui/system提供的工具函数实现样式复用

简单来说,v6里没有makeStyles的容身之地,必须替换为v6的原生样式方案。

内容的提问来源于stack exchange,提问作者Alexey Romanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:27:36