【问题标题】:Can't use fat arrow functions (ES6) in react [duplicate]不能在反应中使用胖箭头函数(ES6)[重复]
【发布时间】:2017-05-18 18:19:53
【问题描述】:

我在 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,
                ]
            }
        ]
    }
};

【问题讨论】:

    标签: javascript reactjs ecmascript-6


    【解决方案1】:

    您正在尝试使用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你选择的那个。

    【讨论】:

    • 选择了第一个选项,这很有效。将对此进行更多研究,因为我似乎误解了这个问题。谢谢你的回答!帮了我很多忙。
    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多