获取 React material-UI Autocomplete 中的值

Daw*_*n17 44 javascript reactjs material-ui

我指的是 React Material-UI 的文档(https://material-ui.com/components/autocomplete/)。

在演示代码中,

    <Autocomplete
      options={top100Films}
      getOptionLabel={(option: FilmOptionType) => option.title}
      style={{ width: 300 }}
      renderInput={params => (
        <TextField {...params} label="Combo box" variant="outlined" fullWidth />
      )}
    />
Run Code Online (Sandbox Code Playgroud)

我知道它是如何工作的,但我不确定我应该如何获得选定的值。

例如,我想为此使用onChange道具,以便我可以根据选择进行一些操作。

我尝试添加 onChange={v => console.log(v)}

v没有显示与所选值相关的任何内容。

Daw*_*n17 110

通过使用传递(event, value)onChange道具来解决。

<Autocomplete
    onChange={(event, value) => console.log(value)} // prints the selected value
    renderInput={params => (
        <TextField {...params} label="Label" variant="outlined" fullWidth />
    )}
/>
Run Code Online (Sandbox Code Playgroud)

  • 好的!有人可能会觉得有用的小附录:如果用户输入任意值(如“freeSolo”),则不会有“onChange”事件。但是,有 `onInputChange` 并且我正在跟踪组件状态中的值,因此当用户单击“添加”按钮时我可以使用它。我正在使用这两个事件。 (11认同)
  • 我花了几个小时试图让这个值正确,这解决得很漂亮。 (6认同)
  • 我如何获得所选项目的索引?意思是如果我选择第一个,我想要 0 等等 (3认同)
  • 我如何获得多个自动完成值? (2认同)

小智 8

onChange属性也适用于多个自动完成值(@Steve Angello @ShwetaJ)。返回value的是所有选定选项的列表。

const [selectedOptions, setSelectedOptions] = useState([]);

const handleChange = (event, value) => setSelectedOptions(value);

const handleSubmit = () => console.log(selectedOptions);

.
.
.

<Autocomplete
  multiple
  autoHighlight
  id="tags-outlined"
  options={top100Films}
  getOptionLabel={(option) => option.title}
  onChange={handleChange}
  filterSelectedOptions
  renderInput={(params) => (
    <TextField
      {...params}
      variant="standard"
    />
  )}
/>

.
.
.


<button onClick={handleSubmit}>Submit!</button>
Run Code Online (Sandbox Code Playgroud)