javascript - 不能在 react 中使用粗箭头函数(ES6)

标签 javascript reactjs ecmascript-6

<分区>

我在 React 中使用粗箭头函数时遇到了一些问题。如果该函数不是匿名的,它会提示语法并且不会编译。

这个:

handleItemClick = (e, { name }) => this.setState({ activeItem: name });

给我:

BabelLoaderError: SyntaxError: Unexpected token (20:20)

它指向等号(handleItemClick'=')。

然而,这工作得很好:

onClick={ (arg) => {//Do something} };

我的 webpack 配置有问题,还是我遗漏了什么?感谢任何提示。

module.exports = {
  entry: PATHS.app_path,
    output:{
        path: PATHS.build,
        filename: 'index.js'
    },
    devServer:{
        inline: true,
        port: 3333,
        contentBase: PATHS.build,
        publicBase: PATHS.build,
        historyApiFallback: true
    },
    resolve: {
        root: path.resolve('./public'),
        extensions: ['', '.js', '.jsx']
    },
    module: {
        loaders: [
            {
                test: /\.jsx?$/,
                exclude: /(node_modules|bower_components)/,
                loader: 'babel',
                query: {
                    presets: ['es2015', 'react']
                }
            },
            {
                test: /\.css$/,
                loader: 'style-loader'
            },
            {
                test: /\.css$/,
                loader: 'css-loader',
                query: {
                    modules: true,
                    localIdentName: '[local]'
                    //localIdentName: '[name]__[local]___[hash:base64:5]'
                }
            },
            { test: /\.(png|woff|woff2|eot|ttf|jpg)$/, loader: 'url-loader?limit=100000' },
            {
                test: /.*\.svg$/,
                loaders: [
                    'file-loader',
                    'svgo-loader?' + svgoConfig,
                ]
            }
        ]
    }
};

最佳答案

您正在尝试使用 class fields ,它们不是 ES6 的一部分,也不在 es2015 和 React 预设范围内。

您可以使用 Class properties transform babel plugin 启用它:

query: {
    presets: ['es2015', 'react'],
    plugins: ["transform-class-properties"]
}   

或者使用 babel stage-2 preset ,其中包括转换插件:

query: {
    presets: ['es2015', 'react', 'stage-2']
}

不要忘记 npm install 您选择的那个。

关于javascript - 不能在 react 中使用粗箭头函数(ES6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464154/

相关文章:

javascript - 如何编写压缩友好的 JavaScript?

javascript - DataTables JS 在 PHP 应用程序中无法正确排序日期

javascript - Javascript 中的组合比较/"Spaceship"运算符 (<=>)?

css - 将 Styled-Component 与 Selenium 定位器集成

javascript - ES6,返回一个对象数组以逗号分隔的字符串列表

javascript - ''router-outlet' 不是已知元素 - Angular

javascript - create-react-app/react-native-elements 错误

javascript - React Router 无法获取/依赖于 onEnter 函数

javascript - 渲染CSS样式应用了React无状态功能语句

javascript - 不同变量的单一数据类型