如何覆盖材料ui REACTjs中menuItem中的选定类?

时间:2019-03-31 22:34:37

标签: css reactjs material-ui menuitem styling

你好,我遇到一个问题,当选择menuItem时,我无法覆盖显示正确样式的类: 这是我的代码:

       <MenuItem component={Link} to="/Acceuil" 
        className={{root:classes.menuItem ,selected:classes.selected}} 
           selected={pathname === "/Acceuil"} >
              <ListItemIcon>
                  <Icon className={classes.icon} >
                      insert_drive_file
                   </Icon>
               </ListItemIcon>
            Gestion Commandes
        </MenuItem>

这是const类:

      Const classes = theme => ({
       menuItem: {
         fontStyle:'bold',
         backgroundColor: 'white',
         width: '88%',
      '&:active':{
        borderLeft: '4px solid #51bcda',
        backgroundColor: "-webkit-box-shadow: 6px 4px 53px -7px 
        rgba(0,0,0,0.75), -moz-box-shadow: 6px 4px 53px -7px 
        rgba(0,0,0,0.75),   box-shadow: 6px 4px 53px -7px 
        rgba(0,0,0,0.75),",
        },
       selected:{
       backgroundColor:'red !important' 
       } 
       });

感谢您对我的帮助^^

1 个答案:

答案 0 :(得分:0)

要了解如何使用适当的样式来设置样式,您需要查看ListItem source codeMenuItem会将其大部分样式委托给ListItem)。

以下是ListItem状态的selected样式的相关部分:

export const styles = theme => ({
  root: {
    '&$selected, &$selected:hover, &$selected:focus': {
      backgroundColor: theme.palette.action.selected,
    },
  },
  /* Styles applied to the root element if `selected={true}`. */
  selected: {},
});

下面,我提供了一个示例,该示例覆盖了所选MenuItem的样式以及基于CodeSandbox的有效Selected menus demo

const styles = theme => ({
  menuItemRoot: {
    "&$menuItemSelected, &$menuItemSelected:focus, &$menuItemSelected:hover": {
      backgroundColor: "red"
    }
  },
  menuItemSelected: {}
});
...
            <MenuItem
              classes={{
                root: classes.menuItemRoot,
                selected: classes.menuItemSelected
              }}
...

Edit Menu selected styling

以下是针对不同的Material-UI组件的类似问题/答案:Styling BottomNavigation in React.js Material-UI