无论如何要预 select 确切的下拉值? - 反应 js + material ui

Anyway to pre-select exact drop down value? - react js + material ui

考虑一下

render() {

const { gender } = this.state
}

return (
  <div>

            <FormControl variant="outlined">
              <InputLabel>Gender</InputLabel>
              <Select id="dropdown">
                <MenuItem value={10}>Male</MenuItem>
                <MenuItem value={20}>Female</MenuItem>
              </Select>
            </FormControl>


  </div>

加载时,我只想预选“男性”,因为常量性别等于“男性”。例如。在加载时它应该是这样的:

我试过将 document.getElementById("dropdown").selectedIndex = "0"; 放在 componentDidMount 上,但没有成功。通常在正常情况下工作 select/option

如何实现?

默认情况下应该选择第一个条目,但如果选项的顺序不同,您可以指定默认初始值。这可以设置为初始状态或任何生命周期函数。

使用直接 DOM 操作是一种反应反模式,坚持使用状态 and/or 道具来驱动组件生命周期。

<Select value={10} id="dropdown">

简单演示

ReactDOM.render(
  <React.StrictMode>
    <select value={30}>
      <option value={10}>Male</option>
      <option value={20}>Female</option>
      <option value={30}>Non-binary</option>
    </select>

    <select>
      <option value={10}>Male</option>
      <option value={20}>Female</option>
      <option value={30}>Non-binary</option>
    </select>

    <select value={10}>
      <option value={10}>Male</option>
      <option value={20}>Female</option>
      <option value={30}>Non-binary</option>
    </select>
  </React.StrictMode>,
  document.getElementById("root")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<body>
  <div id="root" />
</body>