箭头函数可以在ES6类定义中使用吗?我不被问是否应该,但是可以吗?
阅读他的MDN article说他们是ill suited as methods
后,我感到很好奇。
如果是,正确的语法是什么?
class someComponent extends React.Component {
constructor(props) {
super(props);
}
// arrow function here
render () {
}
}
研究
答案 0 :(得分:2)
据我所知,没有正确的语法,因为箭头功能没有任何好处。但是,如果您想知道如何在类中很好地包含一个箭头功能...在这里,您可以进行以下操作:
class someClass {
constructor() {
this.myTestProperty = "fus ro dah";
this.someArrowMethod = () => {
console.log("Arrow Method: ", this.myTestProperty);
};
}
method() {
console.log("Normal Method: ", this.myTestProperty);
}
//ERROR: this is illegal in node v10 but webpack or typescript may be able to compile it correctly.
illegalArrowMethod = () => {
}
}
const something = new someClass();
something.method();
something.someArrowMethod();
如您所见,正确的类Object的属性仍然可以通过常规Method中的this
关键字获得。因此,我想不出为什么要在类中使用箭头功能的用例。
答案 1 :(得分:1)
是的。您现在需要像babel这样的编译器以及相应的插件来对它们进行转换。
plugins: ["transform-object-rest-spread", "transform-class-properties"],
这些方法在需要用作事件处理程序的回调时特别有用。
反应对象
clickHandler = () => {
// this is A. O.K.
}
反应渲染功能
<div className="scene" onClick = {this.clickHandler} >