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

在Storybook中使用Material UI组件时主题切换无效、Docs页报错咨询

你遇到的问题不是Material UI v5的bug,核心原因是你使用的storybook-addon-material-ui插件仅适配Material UI v4,与v5版本完全不兼容。

解决步骤

  • 第一步:卸载不兼容的旧插件
    执行命令:

    npm uninstall storybook-addon-material-ui
    # 若使用yarn则执行
    # yarn remove storybook-addon-material-ui
    
  • 第二步:调整.storybook/preview.js配置,直接使用MUI v5官方的ThemeProvider包裹组件,无需第三方插件即可实现主题接入,参考配置如下:

    import { ThemeProvider, createTheme } from '@mui/material/styles';
    import CssBaseline from '@mui/material/CssBaseline';
    
    // 可自定义主题配置,替换为你项目的实际主题即可
    const customTheme = createTheme({
      palette: {
        mode: 'light',
        // 其他自定义主题字段
      }
    });
    
    export const parameters = {
      actions: { argTypesRegex: "^on[A-Z].*" },
      controls: {
        matchers: {
          color: /(background|color)$/i,
          date: /Date$/,
        },
      },
    }
    
    export const decorators = [
      (Story) => (
        <ThemeProvider theme={customTheme}>
          <CssBaseline />
          <Story />
        </ThemeProvider>
      )
    ];
    

额外说明

如果需要在Storybook中实现多主题切换功能,可直接利用Storybook自带的controls能力实现,无需依赖第三方插件:

  1. 在parameters中新增主题控制参数
  2. 在decorator中根据当前选中的参数动态生成对应的主题实例即可。

你遇到的Docs页报错,是因为旧插件传递给MUI v5的主题对象结构不符合v5规范,MUI v5的Button组件需要读取theme.shape.borderRadius属性,而旧插件生成的主题没有对应结构导致读取失败,替换为官方ThemeProvider配置后即可解决。

内容的提问来源于stack exchange,提问作者Ugo Lfe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:03