如何在 React 的 Select 组件中覆盖 Material UI Popover CSS 类
How override Material UI Popover CSS classes in Select component in React
我在我的 React 项目中使用 Material UI Select component。
我正在尝试覆盖 CSS class .MuiPaper-root
和/或 .MuiMenu-list
.
我的Select组件:
<Select
value={selectValue}
disableUnderline
onChange={handleChange}
css={styles.select}
>
{cities?.map((city) => {
return (
<MenuItem
key={city.value}
value={city.value}
css={styles.selectItem}
>
{city.label}
</MenuItem>
);
})}
</Select>
下面不工作?
export default ({ theme }: StylesProps) => ({
select: css`
.MuiPaper-root {
background-color: red;
}
`,
});
根据 doc,我们可以通过多种方式修改 MUI 中的样式。为了更改 MuiPaper
,我们可以利用 createMuiTheme
并创建如下主题来覆盖 MuiPaper
:
const theme = createMuiTheme({
overrides: {
MuiPaper: {
root: {
color: "white"
}
}
}
});
然后,我们需要将它作为主题道具传递给 ThemeProvider
组件:
<ThemeProvider theme={theme}>
//***Other part of your code***//
</ThemeProvider>
在 Select 组件中更改 MenuProps 时,我们可以在 Select
组件中使用一个名为 MenuProps
的 属性(description in doc)
首先,我在useStyles
中创建了一个列表样式:
const useStyles = makeStyles((theme) => ({
//other classes//
list: {
backgroundColor: "blue"
}
}));
然后将其作为 MenuProp
属性 传递给 select 组件:
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={age}
onChange={handleChange}
MenuProps={{ classes: { list: classes.list } }}
>
//***other part of your code***//
</Select>
这是我为此示例创建的 codesandbox 示例。在 Muipaper
修改中,我将文本的颜色更改为白色。并在 MenuProps
中将背景颜色更改为蓝色。
我在我的 React 项目中使用 Material UI Select component。
我正在尝试覆盖 CSS class .MuiPaper-root
和/或 .MuiMenu-list
.
我的Select组件:
<Select
value={selectValue}
disableUnderline
onChange={handleChange}
css={styles.select}
>
{cities?.map((city) => {
return (
<MenuItem
key={city.value}
value={city.value}
css={styles.selectItem}
>
{city.label}
</MenuItem>
);
})}
</Select>
下面不工作?
export default ({ theme }: StylesProps) => ({
select: css`
.MuiPaper-root {
background-color: red;
}
`,
});
根据 doc,我们可以通过多种方式修改 MUI 中的样式。为了更改 MuiPaper
,我们可以利用 createMuiTheme
并创建如下主题来覆盖 MuiPaper
:
const theme = createMuiTheme({
overrides: {
MuiPaper: {
root: {
color: "white"
}
}
}
});
然后,我们需要将它作为主题道具传递给 ThemeProvider
组件:
<ThemeProvider theme={theme}>
//***Other part of your code***//
</ThemeProvider>
在 Select 组件中更改 MenuProps 时,我们可以在 Select
组件中使用一个名为 MenuProps
的 属性(description in doc)
首先,我在useStyles
中创建了一个列表样式:
const useStyles = makeStyles((theme) => ({
//other classes//
list: {
backgroundColor: "blue"
}
}));
然后将其作为 MenuProp
属性 传递给 select 组件:
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={age}
onChange={handleChange}
MenuProps={{ classes: { list: classes.list } }}
>
//***other part of your code***//
</Select>
这是我为此示例创建的 codesandbox 示例。在 Muipaper
修改中,我将文本的颜色更改为白色。并在 MenuProps
中将背景颜色更改为蓝色。