Material UI 选择焦点和选定的背景颜色

Art*_*ttu 3 reactjs material-ui

我里面有 Select 组件和 MenuItems,我想从聚焦的 Select 组件和选定的 MenuItem 中删除或覆盖背景颜色。

选定的 MenuItem 具有以下背景颜色:

在此输入图像描述

在我选择项目后,选择组件具有焦点,如下所示:

在此输入图像描述

这是我的 Select 组件和其中的 MenuItem:

<Select
    classes={{ focused: classes.selected }}
>
    <MenuItem
        classes={{ selected: classes.selected }}
    >
        Never
    </MenuItem>
</Select>
Run Code Online (Sandbox Code Playgroud)

我只是尝试覆盖背景颜色以使其与正常情况相同:

focused: {
    backgroundColor: "#fff",
},

selected: {
    backgroundColor: "#fff",
},
Run Code Online (Sandbox Code Playgroud)

有关如何删除或覆盖这些背景颜色的任何提示?选择选项后,选择组件不必保持焦点。

编辑:发现焦点出现在哪里,我很确定我需要通过 inputProps 来定位它,但不知道如何:

在此输入图像描述

Raj*_*jiv 5

Select要更改焦点组件的背景,root请使用classesprop 定位类并添加:hover样式。

<Select classes={{ root: classes.selectRoot }}>
{... menuitems}
</Select>
Run Code Online (Sandbox Code Playgroud)
const useStyles = makeStyles((theme) => ({
  selectRoot: {
  //...other styles
    '&:focus':{
      backgroundColor:'yellow'
    }
  }
}));
Run Code Online (Sandbox Code Playgroud)

为了更改所选的背景MenuItem,需要执行类似的操作。对于这个目标selectedroot的类MenuItem

<MenuItem
  classes={{ selected: classes.selected, root: classes.rootMenuItem }}
  value={"1"}>
  Never
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
const useStyles = makeStyles((theme) => ({
  selected: {
  },
  rootMenuItem: {
    "&$selected": {
      backgroundColor: "red",
        "&:hover": {
          backgroundColor: "green"
         }
      },
    '&:hover':{
      backgroundColor:'blue'
    }
  }
}));
Run Code Online (Sandbox Code Playgroud)

另一种样式设置方式MenuItem:-为每个类
提供类并不是可取的,它会增加代码重复,并且还会破坏一些干净的代码规则(如果遵循)。因此,为了克服这个问题,请使用创建自定义 listItem 。classes={{ selected: classes.selected, root: classes.rootMenuItem }}ListItemwithStyles

const CustomMenuItem = withStyles((theme) =>createStyles({
  root:{
        "&$selected": {
            backgroundColor: "red",
            "&:hover": {
                backgroundColor: "green"
            }
    },
    '&:hover':{
      backgroundColor:'blue'
    }
  },
  selected:{
    
  }
})
)(MenuItem);
Run Code Online (Sandbox Code Playgroud)

现在用它CustomMenuItem 代替ListItem.

<Select classes={{ root: classes.selectRoot }}>
  <CustomMenuItem value={"1"}>Never1</CustomMenuItem>
  <CustomMenuItem value={"2"}>Never2</CustomMenuItem>
  <CustomMenuItem value={"3"}>Never3</CustomMenuItem>
</Select>
Run Code Online (Sandbox Code Playgroud)

注意:- 我在这里添加了随机背景颜色。

工作演示:-
编辑hidden-leaf-63jme