嘿所以我有一个文本框/ 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});
}
答案 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) } }