我有一个由extends React.Component 定义的反应组件。在其中,与render方法一起,是:
constructor(props, context) {
super(props, context);
this.state = {
open: false,
};
}
handleClose = () => { //this works
this.setState({open: false});
};
handleOpen = () => { //this works
this.setState({open: true});
};
let empty = () => {}; // does not work, error Parsing error: Unexpected token
如果我使用let或const作为任何箭头函数的前缀,我似乎会收到意外的令牌错误。我在这里错过了什么吗?
感谢
答案 0 :(得分:2)
阅读关于课程的babel documentation。使用let
或const
不是ES6可能的类定义前缀
答案 1 :(得分:0)
ECMA 2015 spec似乎只允许类定义正文中的methods
和static methods
。
因此,在这种情况下,不允许赋值语句,因此来自babel的Unexpected token
错误。
答案 2 :(得分:0)
您尝试使用实验性的ES7功能,并且可能只启用了ES6(您也不能在类中使用let或const前缀)。如果你正在使用babel6,那么切换到正确的插件应该很简单。从基本相同的问题看到这个答案:How to use ES6 arrow in class methods?
答案 3 :(得分:0)
您似乎正在使用class properties declartion proposal。建议的语法是:
class ClassWithoutInits { myProp; } class ClassWithInits { myProp = 42; }
如您所见,没有let
或const
或var
。 let empty = () => {};
不起作用,因为它不是有效的语法,就像错误消息告诉你的那样。