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

Material UI修改主次颜色报错:createMuiTheme不是函数

解决Material UI中createMuiTheme is not a function报错问题

嘿,这个问题我之前踩过坑!报错的核心原因要么是导入路径/API名称不对,要么是Material UI版本不匹配,下面给你分情况一步步解决:

情况1:你用的是Material UI v4

v4的主题API确实是createMuiTheme和MuiThemeProvider,但你可能犯了两个小错误:

  • 导入路径错误:必须从@material-ui/core/styles导入,而非其他路径
  • 主题配置格式错误:palette里的primary/secondary需要是包含main属性的对象,不能直接写颜色字符串

正确代码示例:

// 正确导入
import { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';

// 正确配置主题
const theme = createMuiTheme({
  palette: {
    primary: {
      main: '#00bcd4', // 颜色值要放在main字段里
    },
    secondary: {
      main: '#ff4081',
    },
  },
});

// 包裹你的App组件
function Root() {
  return (
    <MuiThemeProvider theme={theme}>
      <App />
    </MuiThemeProvider>
  );
}

// 使用Button时依然可以用primary/secondary属性
<Button primary>主按钮</Button>
<Button secondary>次按钮</Button>

情况2:你用的是Material UI v5(最新版本)

v5对主题API做了重命名,createMuiTheme改成了createTheme,MuiThemeProvider改成了ThemeProvider,而且包名从@material-ui换成了@mui,这是最容易踩的坑!

正确代码示例:

// 正确导入v5的API
import { createTheme, ThemeProvider } from '@mui/material/styles';
import Button from '@mui/material/Button';

// 主题配置逻辑和v4类似,只是API名称变了
const theme = createTheme({
  palette: {
    primary: {
      main: '#00bcd4',
    },
    secondary: {
      main: '#ff4081',
    },
  },
});

// 用ThemeProvider包裹组件
function Root() {
  return (
    <ThemeProvider theme={theme}>
      <App />
    </ThemeProvider>
  );
}

// v5里Button的用法略有变化,推荐用color属性
<Button variant="contained" color="primary">主按钮</Button>
<Button variant="contained" color="secondary">次按钮</Button>

额外排查点

如果你还是报错,检查一下你的package.json:

  • 不要同时安装@material-ui/core(v4)和@mui/material(v5),会导致版本冲突
  • 确认你安装的版本对应的API文档,避免混用不同版本的代码

内容的提问来源于stack exchange,提问作者Den Gas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:31:29