如何在事件[自动完成]组件中获取“名称”

时间:2019-12-05 13:48:30

标签: reactjs material-ui

我有处理程序 fn ,用于处理来自文本字段的输入。

我想将其用于自动完成组件,但我无法从中获取“名称”和值。

function handlerChange(e){ 
const { name, value, checked } = e.target;
  return { name, value: value || checked };
}

 <Autocomplete
    id="distributions"
    name="defaultDistr"
    options={distributions}
    getOptionLabel={distribution => distribution}
    inputValue={defaultDistr}
    defaultValue={defaultDistr}
    onChange={(e, value) => {
      console.log('e', e, 'value', value);
    }}
    renderInput={params => (
      <TextField
        {...params}
        name="defaultDistr"
        label="distributions"
        margin="normal"
        fullWidth
      />
    )}
  />

1 个答案:

答案 0 :(得分:0)

对于Autocomplete,有许多不同的事件可以导致值的改变。这些事件可能来自多种不同的元素,因此您不能依靠事件的目标来获取名称。同样,事件的目标不一定有一个值,即使有,该值也可能不代表Autocomplete的当前值。这就是为什么将正确的值作为第二个参数传递给onChange处理程序的原因。

假设handlerChange中的代码比您显示的要重要,因此值得重复使用,您可以执行如下所示的操作,创建一个新对象,将信息组织到处理程序的结构中在期待。

<Autocomplete onChange={(event, value)=> { handlerChange({target: {name: "defaultDistr", value: value}})} .../>