Borwserify、Watchify、Babelfiy (ES2015 プリセット付き) を使用して React に入ろうとしています。
なぜこれが機能しているのか、誰でも説明できますか...
export default class HelloWorld extends React.Component {
constructor(props) {
super(props);
this.state = {
username: 'Tyler McGinnis'
}
this.handleChange = (e) => {
this.setState({username: e.target.value})
};
}
render() {
return (
<div>
Hello {this.state.username} <br />
Change Name: <input type="text" value={this.state.username} onChange={this.handleChange} />
</div>
)
}
そして、このコードはそうではありません(コンストラクターの外側の矢印関数)...
export default class HelloWorld extends React.Component {
constructor(props) {
super(props);
this.state = {
username: 'Tyler McGinnis'
}
}
handleChange = (e) => {
this.setState({username: e.target.value})
};
render() {
return (
<div>
Hello {this.state.username} <br />
Change Name: <input type="text" value={this.state.username} onChange={this.handleChange} />
</div>
)
}
最後のエラーは次のように表示されます。
Unexpected token (18:17)
handleChange = ((e) => {
^
this.setState({username: e.target.value})
} );
インターネットで見つけることができるのは、両方の構文が機能するはずですが、機能しないことだけです。これは、ES2015 の babel プリセットが正しく設定されている場合に発生します (問題なくバージョン 1 をコンパイルすることで証明されます)。
私は何が欠けていますか?コンストラクター (またはおそらくクラス内の他の「通常の」関数) の外にアロー関数を使用できないのはなぜですか?
どんな助けでも大歓迎です!ありがとうございました!