Я новичок в ES6 с React, и увидеть этот необъяснимый код компонента:ES6 и ES8 синтаксис в React компонент
componentWillUnmount() {
base.removeBinding(this.ref);
this.unsubscribe();
}
// ES6 syntax
handleToggle(event, toggled){
this.setState({
[event.target.name]: toggled,
});
};
// possible ES8 syntax
handleToggle = (event, toggled) => {
this.setState({
[event.target.name]: toggled,
});
};
второй метод сбивает с толку меня, что именно происходит с помощью метода handleToggle? Есть ли эквивалент ES5?
Мое предположение, что эквивалентно ES5 является:
componentWillUnmount: function() {
base.removeBinding(this.ref);
this.unsubscribe();
}
handleToggle: (event, toggled) => {
this.setState({
[event.target.name]: toggled,
});
};
... проблема/запутанной части со вторым способом, является то, что «это» в методе handleToggle будет связан с неправильным значением (lexical scope 'this' value) ... так ли этот синтаксис даже действителен здесь?
Что происходит? Это код в чужой библиотеке, который я хочу понять.
В соответствии с этим artcile, snytax в вопросе ES8 ?! https://daveceddia.com/avoid-bind-when-passing-props/ –
np, я думаю, что эквивалент ES5, который вы показали, неверен –