Javascript Babel在arrow函数上抛出语法错误

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

我正试图适应React的一个小项目,但我遇到了麻烦,我不知道如何解决这个问题,因为我不知道这是原始代码还是我的Babel有问题(比如,缺少一个库或什么),或者我不能,因为React

所以问题是我必须调整一些函数,否则Babel会在它们上面抛出一个意外的标记,即

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您将它添加到配置中了吗?我没有阅读整个文档,所以我没有看到需要添加的内容,我一时觉得很傻:谢谢,一切似乎都正常现在,我完全可以使用他们建议的语法了!