[英]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.