2017-06-26 17 views
0

このコードを使用すると、エラーProperty 'type' does not exist on type 'EventTarget'が発生します。 checked,valueおよびnameについても同様です。React TypeScript 2.3 - > typesafe React Bootstrap FormControl onChange

コードに続いて、FormEventSyntheticEventから継承し、順番にtarget: EventTargetとなります。 EventTargetには、私が行ったプロパティはありません。代わりにeventanyevent: any)とマークすると、コードは問題なく動作します。これをどうすれば解決できますか?私は通常のHTML入力で試してみた後、イベントをReact.ChangeEvent<HTMLInputElement>として設定しました。

入力でコードを作業する
handleChange(event: React.FormEvent<React.Component<ReactBootstrap.FormControlProps, {}>>) { 
    const target = event.target; 
    const value = target.type === 'checkbox' ? target.checked : target.value; 
    const name = target.name; 

    this.setState({ 
     [name]: value 
    }); 
} 
... 
<FormGroup controlId="Email"> 
    <Col componentClass={ControlLabel} sm={2}> 
     Email 
    </Col> 
    <Col sm={10}> 
     <FormControl name="email" type="email" value={this.state.email} onChange={(event) => this.handleChange(event)} placeholder="Email" /> 
    </Col> 
</FormGroup> 

handleChange(event: React.ChangeEvent<HTMLInputElement>) { 
    ... 
} 

... 

<input 
name="email" 
type="email" 
value={this.state.email} 
onChange={(event) => this.handleChange(event)} /> 

答えて

2

はこのようにそれを解決:

handleChange(event: React.ChangeEvent<HTMLInputElement>) { 
    const target = event.target; 
    const value = target.type === 'checkbox' ? target.checked : target.value; 
    const name = target.name as any; 

    this.setState({ 
     [name]: value 
    }); 
} 

... 

<FormControl name="email" type="email" value={this.state.email} onChange={(event) => this.handleChange(event as any)} placeholder="Email" /> 
+0

'onChange'イベントハンドラで脂肪の矢印を使用する利点は何(すなわち'のonChange = { (イベント)=> this.handleChange(イベントは任意のもの)} ')vsちょうど' onChange = {this.handleChange} '? –

+0

おっと!さて、私はなぜあなたが第二の選択肢を使うことができないのか分かります。イベントタイプは、TypeScript 2.Xコンパイラと互換性がありません。 –

+0

これは、矢印関数に独自の 'this'または' arguments binding'がないために使用します。 'this.setState'はそうでなければ動作しません。私は同じことを達成するためにバインドを使用することができますが、私はこれがきれいだと思う。 https://facebook.github.io/react/docs/handling-events.html – Ogglas

関連する問題