生产中的材质 UI 类名称无法正确解析

Fra*_*uez 5 css production reactjs material-ui jss

目前的行为

生产中生成的类名makeStyles会破坏在开发模式下显然可以正常工作的功能。

(嵌套)运算&符在生产中中断导致类名中的唯一标识符不匹配。

简单的例子

1 - 开发模式:white_check_mark:

1.1检查<head>标签,生成的样式:

  • 我的组件中的自定义makeStyles生成:

捕捉潘塔拉 2020-07-22 和 las 1 20 01

1.2 MaterialUI渲染的类名:

捕捉潘塔拉 2020-07-22 和 las 1 19 16

(忽略附加属性,有信息性无功能)

1.3 chrome中检查的匹配样式:

捕捉潘塔拉 2020-07-22 和 las 1 19 46

匹配正确并正确覆盖样式。

这有效

捕捉潘塔拉 2020-07-22 和 las 1 25 50

scale的预期transform被正确覆盖。

2 - 生产模式:x:

2.1检查<head>标签,生成的样式:

  • 我的组件中的自定义makeStyles生成:

捕捉潘塔拉 2020-07-22 和 las 1 36 32

(显然和开发中的一样)

2.2 - MaterialUI 渲染的类名: 捕捉潘塔拉 2020-07-22 和 las 1 33 56 (忽略附加属性,有信息但没有功能) 它们都有一个随机后缀。

2.3 chrome中检查的匹配样式:

捕捉潘塔拉 2020-07-22 和 las 1 42 07

.makeStyles-root-304.MuiInputLabel-marginDense生成的类名与makeStylesMaterialUi 标签中不匹配导致标识符.MuiInputLabel-marginDense-220。以标签中的HTML节点结尾220,在生成时还makeStyles没有220后缀

不匹配。这不起作用

捕捉潘塔拉 2020-07-22 和 las 1 32 03

样式未被覆盖

预期行为

在生产模式下,标识符可以与变量 os 匹配。也许我错了,但我不知道为什么会造成这种情况。

重现步骤

我写了一个我正在尝试的简单示例,您可以在https://codesandbox.io/s/simbleapp-1xzgd?file=/public/index.html中检查 Codesandbox 示例是否正常工作(Codesandbox 作为开发环境)

检查我发布的问题,它需要在类似生产的环境中,然后只需在本地下载相同的 Codesandbox 即可:

npm install --production
npm run build
npm run start:prod
Run Code Online (Sandbox Code Playgroud)

我只是想为我的项目做一个简单的材料库包装,我发现这个问题偶然检查生产应用程序,因为在开发中我从未遇到过这种行为。

您的环境

“核心库”依赖项

@material-ui/core  v4.11.0  
@material-ui/styles  v4.10.0  
React   peer     
Browser   Chrome     
TypeScript  3.7.3      
Run Code Online (Sandbox Code Playgroud)

“应用程序”依赖项

React 16.13.0     
Browser Chrome     
Run Code Online (Sandbox Code Playgroud)