[英]Mui v5 styleOverrides not working with themes
我正在尝试使用此处文档中所述的主题覆盖设置样式:
我有以下代码沙箱:
import * as React from 'react';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import Select from '@mui/material/Select'
import MenuItem from '@mui/material/MenuItem'
const theme = createTheme({
components: {
MuiSelect: {
styleOverrides: {
root: {
background: '#000',
},
},
},
},
});
export default function GlobalThemeOverride() {
return (
<ThemeProvider theme={theme}>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
variant="standard"
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
</ThemeProvider>
);
}
选择框的背景应该是#fff
但是根本没有设置背景。 :(
这对我来说看起来像是一个错误(或者至少缺少开发人员期望存在的合理功能)。 问题是 Select 没有在根级别定义它自己的任何样式,因此它没有利用代码(这将是对 MUI styled
的调用,例如此处为select
类)来处理查找在主题并应用相应的样式覆盖。 我建议记录一个问题。
有几种可能的解决方法。
select
CSS 类为目标这种方法可能有效,但这取决于您要尝试做什么,因为它针对的是根元素的子元素。
const theme = createTheme({
components: {
MuiSelect: {
styleOverrides: {
select: {
backgroundColor: "#000",
color: "#fff"
}
}
}
}
});
MuiInput-root
CSS 类为目标下面的方法通过利用MuiInput-root
(当变体为“标准”时将 Select 的根元素的呈现委托给Input
组件)来MuiInput-root
与MuiSelect-root
相同的元素,然后通过"&.MuiSelect-root"
,因此它只影响Select
而不是所有输入。
const theme = createTheme({
components: {
MuiInput: {
styleOverrides: {
root: {
"&.MuiSelect-root": {
backgroundColor: "#000",
color: "#fff"
}
}
}
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.