Я пытаюсь вступить в реакцию, используя borwserify, watchify, babelfiy (с предустановкой es2015).Es6 React Arrow function behavior
Может пожалуйста, кто-нибудь объяснить, почему это работает:
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>
)
}
в то время как это не является (функция стрелка вне constrcutor)
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 без проблем).
Что мне не хватает? почему can not у меня есть функция стрелки вне конструктора (или, возможно, какая-либо другая «регулярная» функция в классе)? Любая помощь ценится!
Потому что это расширение ES7. Этот синтаксис не работает в ES6, ваш компилятор прав. – Bergi
У вас нет функций стрелок как метод класса в es6 – baao
wow, который был быстрым. Спасибо вам обоим! есть ли предустановка es7 для Babel случайно ...? или я должен просто оставить его? –