如何在react的Material-UI选择框中设置默认值?

use*_*513 7 reactjs material-design material-ui react-redux jss

我正在使用material-ui中的选择框

我想显示默认情况下选中的“选择值”选项,但是之后该用户将无法选择此选项。

<FormControl required className={classes.formControl}>
  <InputLabel htmlFor="circle">Circle</InputLabel>
    <Select
      value={circle}
      onChange={event => handleInput(event, "circle")}
      input={<Input name="circle" id="circle" />}
    >
      <MenuItem value="" disabled>
        <em>select the value</em>
      </MenuItem>

      <MenuItem value={10}>Ten</MenuItem>
      <MenuItem value={20}>Twenty</MenuItem>
      <MenuItem value={30}>Thirty</MenuItem>
    </Select>
  <FormHelperText>Some important helper text</FormHelperText>
</FormControl>
Run Code Online (Sandbox Code Playgroud)

沙箱上的当前代码:https : //codesandbox.io/s/xoylmlj1qp

我想像这样:https : //jsfiddle.net/wc1mxdto/


更新资料

我将状态更改20为空白字符串

form: {
  searchValue: "",
  circle: '',
  searchCriteria: ""
}
Run Code Online (Sandbox Code Playgroud)

现在预期的输出应该是下拉列表,应该显示“ please select value”,但是目前显示 在此处输入图片说明

小智 10

由于 React 引入了React-Hooks,你只需要将 React.useState() 中的默认值作为 React.useState(10) 传递。


export default function CustomizedSelects() {
  const classes = useStyles();
  const [age, setAge] = React.useState(10);// <--------------(Like this).
  const handleChange = event => {
    setAge(event.target.value);
  };
  return (
    <form className={classes.root} autoComplete="off">
      <FormControl className={classes.margin}>
        <Select
          value={age}
          className={classes.inner}
          onChange={handleChange}
          input={<BootstrapInput name="currency" id="currency-customized-select" />}
        >
          <MenuItem value={10}>Ten</MenuItem>
          <MenuItem value={20}>Twenty</MenuItem>
          <MenuItem value={30}>Thirty</MenuItem>
        </Select>
      </FormControl>
    </form>
  );
}


Run Code Online (Sandbox Code Playgroud)

  • 这并没有回答标题中的问题*如何设置默认值*。该解决方案将值设置为固定。这意味着,如果不使用状态,用户就无法更改该值。 (2认同)

小智 9

你可以只通过displayEmpty进入选择

<Select
    id="demo-simple-select-outlined"
    displayEmpty
    value={select}
    onChange={handleChange}
>
Run Code Online (Sandbox Code Playgroud)

并像这样定义 menuItem

<MenuItem value=""><Put any default Value which you want to show></MenuItem>
Run Code Online (Sandbox Code Playgroud)


Sak*_*oor 5

您需要提供正确MenuItem的状态值以在渲染时进行匹配。

这是工作代码框:默认选择值Material-UI

  • 示例已损坏:“_typeof 不是函数” (5认同)
  • 你的榜样很难效仿。使用一些有意义的名称而不是 `&lt;Abc/&gt;` 和 `test` 会更好。 (3认同)

小智 5

<FormControl variant="outlined" className={classes.formControl}>
  <InputLabel id="uni">UNI</InputLabel>
  <Select
    key={value}
    defaultValue={value}
    labelId="uni"
    id="uni"
    name="uni"
    onBlur={onChange}
    label="uni"
  >
    {unis.map((u, i) => (
      <MenuItem value={u.value} key={i}>
        {u.label}
      </MenuItem>
    ))}
  </Select>
</FormControl>;
Run Code Online (Sandbox Code Playgroud)

  • 您能否在您的答案中添加有关您提供的代码片段_如何_和_为什么_解决问题的说明?换句话说:问题的根本原因是什么,您的代码片段如何解决这个问题? (7认同)