Material-UI - 为什么在生产环境和开发环境中显示不同的 css
Material-UI - why different css is shown on prod environment then development env
我使用 material UI (verison: ^4.12.3
) Select,自定义输入。
出于某种原因,prod env Select 输入具有黑色背景,:before
元素具有白色背景。
不知道从哪里来的
这是产品图片:
这是开发者的形象Select:
比较envs Select元素的2 css & html时,发现在prod中添加了一个::before
元素,但没有出现在开发中
此外,背景颜色不同。在 prod 中有另一个 class 添加到 InputBase 元素,它在 dev 中不存在。 class 添加黑色背景:
编辑 1
好像MUI注入了<style>
。在产品 html 中,我看到了 background-color: black
和 ::before
。我会尝试添加索引解决方案,但我的问题不是优先级(我使用的样式会覆盖注入的样式)。此外,它不会帮助 ::before
元素。如何禁用注入的样式?或解决它?
注入不良css:
请参考这个. As answered by user Mordechai。
似乎 webpack 可能会扰乱 MUI 关于 JSS 优先级的规则...这可以通过在 MUI 的方法中添加索引 1 来解决。
//Hook
const useStyles = makeStyles({
// your styles here
}, {index: 1})
// HOC
MyComponent = withStyles({
// your styles here
}, {index: 1})(MyComponent)
向应用程序添加 <StylesProvider />
包装器修复了它。我们使用微前端基础设施。其中一个前端应用程序也有 makeStyles
。这会导致 MUI 中的类名冲突。
在根组件中 <App/>
:
import {
StylesProvider,
createGenerateClassName
} from '@material-ui/core/styles';
const generateClassName = createGenerateClassName({
seed: 'app1'
});
const App = () => {
return (
<StylesProvider generateClassName={generateClassName}>
<OtherAppComponents />
</StylesProvider>
)
}
如果您有超过 2 个,请为每个添加一个提供者和一个生成器,使用不同的种子
我使用 material UI (verison: ^4.12.3
) Select,自定义输入。
出于某种原因,prod env Select 输入具有黑色背景,:before
元素具有白色背景。
不知道从哪里来的
这是产品图片:
这是开发者的形象Select:
比较envs Select元素的2 css & html时,发现在prod中添加了一个::before
元素,但没有出现在开发中
此外,背景颜色不同。在 prod 中有另一个 class 添加到 InputBase 元素,它在 dev 中不存在。 class 添加黑色背景:
编辑 1
好像MUI注入了<style>
。在产品 html 中,我看到了 background-color: black
和 ::before
。我会尝试添加索引解决方案,但我的问题不是优先级(我使用的样式会覆盖注入的样式)。此外,它不会帮助 ::before
元素。如何禁用注入的样式?或解决它?
注入不良css:
请参考这个
似乎 webpack 可能会扰乱 MUI 关于 JSS 优先级的规则...这可以通过在 MUI 的方法中添加索引 1 来解决。
//Hook
const useStyles = makeStyles({
// your styles here
}, {index: 1})
// HOC
MyComponent = withStyles({
// your styles here
}, {index: 1})(MyComponent)
向应用程序添加 <StylesProvider />
包装器修复了它。我们使用微前端基础设施。其中一个前端应用程序也有 makeStyles
。这会导致 MUI 中的类名冲突。
在根组件中 <App/>
:
import {
StylesProvider,
createGenerateClassName
} from '@material-ui/core/styles';
const generateClassName = createGenerateClassName({
seed: 'app1'
});
const App = () => {
return (
<StylesProvider generateClassName={generateClassName}>
<OtherAppComponents />
</StylesProvider>
)
}
如果您有超过 2 个,请为每个添加一个提供者和一个生成器,使用不同的种子