2016-07-21 3 views
3

ちょっと、私はthis.stateのjsonのフィールドを更新するはずのテキストボックス/ FormControlを持っています。変更を行うより良い方法があるかどうか疑問に思っていましたか?FormControlのハンドルの変更を処理する

<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

あなたはイベントハンドラについて改善したいのですか?それはかなり大丈夫に見えます。あなたが考慮したいかもしれない1つのことは、状態を突然変異させないことです。 'this.setState({form:{... this.state.form、[change]:event.target.value}})'のようなことをすることができます。これは、パフォーマンス上の理由から、ある時点で 'shouldComponentUpdate'を実装する場合に必要になります。 – amann

+0

そういうこと!ありがとう –

+0

私は最初に予期しないトークンを取得します。 in ... –

答えて

6

として以下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}}) 
    } 
関連する問題