Babel在箭头函数上抛出语法错误

时间:2017-07-09 14:13:42

标签: javascript reactjs webpack ecmascript-6 babeljs

我正在尝试使用React调整this code一个小项目,但是我遇到了麻烦,我不知道如何解决这个问题,因为我不知道这是不是原来的代码或我的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);
    };
};

但是,如果我点击表格上触发订单更改的箭头,我会得到cannot read props of undefined。否则,我会得到'意外令牌'=',如我的代码所示。

所以我的问题如下:是原始代码车,是我的宝贝还是其他东西?我目前在使用webpacker的Rails基础上,但我不相信这就是我遇到这些问题的原因。

1 个答案:

答案 0 :(得分:4)

你错过了babel-plugin-transform-class-properties插件来转换实验语法的类属性(因此是意外的标记RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] )。如果要使用$config['base_url']的类属性和类属性箭头函数,请在Babel配置中包含它。第二个错误,=未定义是因为您使用的是propTypes未引用该组件的常规函数​​。改为返回箭头功能:

this.props