处理FormControl React的变更

时间:2016-07-21 18:34:45

标签: reactjs onchange form-control

嘿所以我有一个文本框/ FormControl,它应该在this.state中更新json中的一个字段。我想知道是否有更好的方法来改变?

<FormControl 
  type='text' 
  placeholder='enter' 
  defaultValue={this.state.form.name}
  onChange={this.handleChange.bind(this, 'name')}
/>
</FormGroup>

`

handleChange(change, event) {
    var toChange = this.state.form;
    toChange[change] = event.target.value;
    this.setState({form: toChange});
  }

2 个答案:

答案 0 :(得分:9)

优化handleChange方法,如下所示。 (将'username'替换为您喜欢的字段名...)

<FormControl 
  type='text'
  name='username' 
  placeholder='enter' 
  defaultValue={this.state.form.username}
  onChange={this.handleChange.bind(this)}
/>
</FormGroup>

handleChange(event) {
    let fieldName = event.target.name;
    let fleldVal = event.target.value;
    this.setState({form: {...this.state.form, [fieldName]: fleldVal}})
  }

答案 1 :(得分:5)

如果您的功能相对简单,则可以进一步简化

onChange = { (event) => { this.myValue = event.target.value } }

,或者如果您要传递props层次结构,例如

onChange = { (event) => { this.props.onMyFunc(event.target.value) } }