如何覆盖选定的MenuItem样式?

时间:2018-03-22 22:09:41

标签: reactjs material-ui

我正在项目中使用Material-ui-next Select组件。

使用classes道具正在覆盖大多数样式。但即使使用selectedMuiThemeProvider密钥也无法正常工作。

以下是代码的相关部分:

...

const theme = createMuiTheme({
  overrides: {
    MuiMenuItem: {
      selected: {
        backgroundColor: 'transparent',
      }
    }
  }
});

...

class SelectMUI extends Component {

  render() {

  const {className, name} = this.props

  return (
    <MuiThemeProvider theme={theme}>
      <Select
        classes={{root: 'muisc-root', icon: 'muisc-icon', select: 'muisc-select', selectMenu: 'muisc-select-menu'}}
        className={`mui-select-custom ${className}`}
        endAdornment={<Caret className='mui-select-caret'/>}
        MenuProps={{classes: {paper: 'muisc-menu-paper'}}}
        {...this.props}
      >
        {this.props.children}
      </Select>
  </MuiThemeProvider>
)

} }

所以,正如你所看到的,当我将MenuItems导入为道具时,我正在使用MuiThemeProvider在项目中注入样式。

以下是所选项目中应用样式的屏幕截图:

enter image description here

如何覆盖这个组合来自同一元素的两个类的选择器?

1 个答案:

答案 0 :(得分:2)

好的,我弄明白了如何覆盖组合选择器。这是解决方案:

   MuiMenuItem: {
      root: {
        background: 'transparent',
        '&$selected': { // <-- mixing the two classes
          backgroundColor: 'transparent'
        }
      }
    }