如何在 Select 元素旁边显示图标而不遮挡箭头

How to display an icon next to a Select element without obscuring the arrow

我正尝试在输入后添加一个帮助图标 here. It looks fine for Input elements. I tried to do the same for Select elements, but it screws up the down arrow of the Select as can be seen in this codesandbox

<Select
  labelId="demo-simple-select-label"
  id="demo-simple-select-adornment"
  value={age}
  onChange={handleChange}
  endAdornment={
    <InputAdornment position="end">
      <HelpOutline />
    </InputAdornment>
  }
>
  <MenuItem value={10}>Ten</MenuItem>
  <MenuItem value={20}>Twenty</MenuItem>
  <MenuItem value={30}>Thirty</MenuItem>
</Select>

关于如何实现这一点有什么想法吗?

看看这个 issue thread - 这似乎是一个他们目前不打算解决的已知问题。

不过,你也可以找到这个quick and dirty fix suggested there, and here is how it can be applied to the example you provided in the sandbox

tl;dr:您可以使用 position: "relative" 覆盖 select-图标样式:

const useStyles = makeStyles(theme => ({
  formControl: {
    margin: theme.spacing(1),
    minWidth: 120
  },
  selectEmpty: {
    marginTop: theme.spacing(2)
  },
  selectIcon: {
    position: "relative"
  }
}))

...

 <Select
    labelId="demo-simple-select-label"
    id="demo-simple-select-adornment"
    value={age}
    onChange={handleChange}
    classes={{
       icon: classes.selectIcon //overriding the select-icon style
       }}
     endAdornment={
         <InputAdornment position="end">
            <HelpOutline />
          </InputAdornment>
          }
      >
          <MenuItem value={10}>Ten</MenuItem>
          <MenuItem value={20}>Twenty</MenuItem>
          <MenuItem value={30}>Thirty</MenuItem>
  </Select>