Javascript Babel在arrow函数上抛出语法错误
我正试图适应React的一个小项目,但我遇到了麻烦,我不知道如何解决这个问题,因为我不知道这是原始代码还是我的Babel有问题(比如,缺少一个库或什么),或者我不能,因为React 所以问题是我必须调整一些函数,否则Babel会在它们上面抛出一个意外的标记,即Javascript Babel在arrow函数上抛出语法错误,javascript,reactjs,webpack,ecmascript-6,babeljs,Javascript,Reactjs,Webpack,Ecmascript 6,Babeljs,我正试图适应React的一个小项目,但我遇到了麻烦,我不知道如何解决这个问题,因为我不知道这是原始代码还是我的Babel有问题(比如,缺少一个库或什么),或者我不能,因为React 所以问题是我必须调整一些函数,否则Babel会在它们上面抛出一个意外的标记,即 static propTypes = { // unexpected '=' onRequestSort: PropTypes.func.isRequired, onSelectAllClick: PropTypes.func.i
static propTypes = { // unexpected '='
onRequestSort: PropTypes.func.isRequired,
onSelectAllClick: PropTypes.func.isRequired,
order: PropTypes.string.isRequired,
orderBy: PropTypes.string.isRequired,
};
变成
static get propTypes() {
return {
onRequestSort: PropTypes.func.isRequired,
onSelectAllClick: PropTypes.func.isRequired,
order: PropTypes.string.isRequired,
orderBy: PropTypes.string.isRequired,
}
}
这是:
handleRequestSort = (event, property) => { ... } // unexpected '='
变成这样:
handleRequestSort(event, property) { ... }
对于我的主要问题,我替换了以下内容:
createSortHandler = property => event => { // unexpected '='
this.props.onRequestSort(event, property);
};
由此
createSortHandler(property) {
return function (event) {
this.props.onRequestSort(event, property);
};
};
但是,如果我单击表上触发订单更改的箭头,我会发现无法读取未定义的道具。否则,我将获得代码中编写的“意外令牌”='
所以我的问题是:最初的代码是错误的,是我的宝贝还是别的什么?我目前使用webpacker在Rails上工作,但我不认为这就是我出现这些问题的原因。您缺少转换类属性的插件,这是实验语法(因此出现了意外的标记=
)。如果您希望为propTypes
和class-property-arrow函数使用类属性,请在Babel配置中包含该属性。第二个错误是,this.props
未定义,因为您使用的是一个常规函数,this
未引用组件。返回一个箭头函数:
createSortHandler(property) {
return (event) => {
this.props.onRequestSort(event, property);
};
};
从方法中尝试return(event)=>{…
。原始代码不是ES6,而是一个建议的语法扩展。这不是Babel的错误。您可以轻松地将this.handleRequestSort=(event,property)=>…;
在您的构造函数中。我安装了插件并重新编译了代码,但是如果我尝试使用“旧”版本,我仍然会得到意外的“=”@Jaeger您将它添加到配置中了吗?我没有阅读整个文档,所以我没有看到需要添加的内容,我一时觉得很傻:谢谢,一切似乎都正常现在,我完全可以使用他们建议的语法了!