reactjs - 在 React 中禁用 Material-UI 生产 css 类名

标签 reactjs material-ui

我正在为 React 使用 Material UI,我想在 NODE_ENV=production 时禁用它处理类名的方式。 .例如

  • 开发:.MuiAppBar-root-12
  • 生产:.jss12

  • 我希望生产类名称与开发中使用的类相同(我出于原型(prototype)设计的原因使用此框架,并且在与他人共享时很难调试)。

    最佳答案

    正如 prod 前缀 .jss12 所暗示的那样, Material UI 使用 react-jss执行此缩小。您可以使用 Material UI 的 createGenerateClassName助手并打开dangerouslyUseGlobalCSS ,或者干脆创建自己的generateClassName函数并将其传递给包装 JssProvider零件。

    来自 Material UI docs :

    import JssProvider from 'react-jss/lib/JssProvider';
    import { createGenerateClassName } from '@material-ui/core/styles';
    
    const generateClassName = createGenerateClassName({
      dangerouslyUseGlobalCSS: true, // won't minify CSS classnames when true
      productionPrefix: 'c', // 'jss' by default
    });
    
    function App() {
      return (
        <JssProvider generateClassName={ generateClassName }>
          ...
        </JssProvider>
      );
    }
    
    export default App;
    

    或者,如果你想要更强大的东西(例如正则表达式匹配),你可以简单地定义你自己的函数,如 this example on Github .

    例子:
    let classNameIndex = 0;
    const generateClassName = (rule, styleSheet) => {
      classNameIndex++;
      return `${ styleSheet.options.classNamePrefix }-${ rule.key }-${ classNameIndex }`;
    }
    

    关于reactjs - 在 React 中禁用 Material-UI 生产 css 类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51413555/

    相关文章:

    javascript - 我如何在 React Router DOM v6 上使用 MemoryRouter 测试位置?

    reactjs - 如何使用 React js 处理非常大的文件下载

    reactjs - 当搜索或过滤器值更改时,如何从 Material UI 的数据网格中保持选择我的行

    javascript - 使用 React-dnd 的 MUI TreeView

    javascript - 如何在事件中传递功能组件?

    reactjs - React - 如何以内联样式显示 HEX 颜色而不是 RGB?

    ios - 使用 ActivityIndi​​catorIOS 时 React Native 元素类型无效错误

    html - <div> 没有使用完整的 bootstrap 列空间

    reactjs - 如何使用 material-ui 网格系统将 5 个项目均匀地组织成一行?

    css - 如何在使用 Material UI 的 React 中设置全局字体颜色