我正在尝试使用 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})
} );
我在 Internet 上可以找到的所有内容都告诉我,这两种语法都应该可以工作,但它们不能。这发生在正确设置了 ES2015 babel 预设的情况下(通过编译第一版没有问题来证明)。
我错过了什么?为什么我不能在构造函数之外有一个箭头函数(或者可能是类中的任何其他“常规”函数)?
任何帮助将不胜感激!谢谢!