onChange在SelectField组件中对于Material-UI / React不接受来自父组件的onChange

时间:2017-08-15 19:27:20

标签: javascript reactjs material-ui

所以我的工作场所在一个组件内部使用SelectField,该组件在多个地方使用。说得通。现在,当我在当前正在使用的那个组件中使用该组件时。我创建的onChange事件没有传递正确完成所需的值。现在,如果我将SelectField更改为onChange = {onChange},它可以正常工作。但是,它不能以这种方式设置,因为app中的其他部分依赖于它。我是React的新手。这是我的功能

  addHistory = (field) => (event, index, value, target) => {
    const { history } = this.state;
    console.log(this.state.history);
    console.log(field);
    if (field === 'employerName' || field === 'description') {
      history[field] = event.target.value;
    } else if (field === 'roles') {
      history[field] = value;
    } else {
      history[field] = event.value;
    }
    this.setState({
      history: this.state.history,
    });
  }

这是我正在导入和使用组件

的CompanySelectField
  <CompanySelectField
    label={translations.translate('driverProperties', 'typeOfVehicle')}
    hint={translations.translate('driverProfile', 'pleaseSelectRole')}
    style={{ marginTop: '25px' }}
    name={'roles'}
    value={this.state.history.roles}
    onChange={this.addHistory('roles')}
    fullWidth
    required
   >

这是CompanySelectField本身

 <SelectField
   name={name}
   maxHeight={300}
   value={value}
   onChange={(event, index, response) => onChange(response)}
   disabled={disabled}
   hintText={hint}
  >

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

你从addHistory返回的方法有4个参数,即event, index, value, target,而你从SelectField组件调用的那个,即onChange={(event, index, response) => onChange(response)},它只有一个参数,而且响应也不匹配用上面提到的返回方法的第一个参数。