当前位置: 首页 > 面试题库 >

无法在反应中使用粗箭头功能(ES6)

刘俊语
2023-03-14
问题内容

我在使用胖箭头功能时遇到了一些问题。如果该函数不是匿名函数,它将抱怨语法并且不会编译。

这个:

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

问题答案:

您正在尝试使用不属于ES6且es2015未涵盖的class字段,并对预设进行反应。

您可以使用Class属性transform babel插件启用它:

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

或使用babel stage-2预设,其中包括transform插件:

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

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



 类似资料:
  • 问题内容: 我正在将ReactJS与Babel和Webpack一起使用,并使用ES6以及针对箭头功能的建议类字段。我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。但是,我不确定100%是否正确使用了它们。以下是我的代码在三个不同文件中的简化部分。 我的代码: Main.js SecondClass.js ThirdClass.js 题: 我上面的代码使用

  • 问题内容: 我正在将ReactJS与Babel和Webpack一起使用,并使用ES6以及针对箭头功能的建议类字段。我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。但是,我不确定100%是否正确使用了它们。以下是我的代码在三个不同文件中的简化部分。 我的代码: Main.js SecondClass.js ThirdClass.js 题: 我上面的代码使用

  • 问题内容: 大家好,我是一名刚开始使用React Router的初学者。 我有两个问题。和之间有什么区别?两者都向完全相同的获取请求,但是当我使用时收到错误,但是当我嵌套路线时使用时却可以工作。我不知道当两者都渲染为完全相同的网址时,我不知道会有什么区别 其次是React Router v4文档中的奇怪箭头功能 我知道这些是ES6中的新功能,但是我无法在括号中找到任何内容,而不是括号。这些是什么?

  • 问题内容: 我是ES6和React的新手,并且我不断看到箭头功能。为什么某些箭头函数在粗体箭头之后使用花括号,而另一些使用括号?例如: 与 谢谢你的帮助! 问题答案: 括号返回单个值,花括号执行多行代码。 您的示例看起来很混乱,因为它使用的是JSX,看起来像多个“行”,但实际上只是被编译为一个“元素”。 这里有一些其他例子,它们都做同样的事情: 您还会经常在对象文字周围看到括号,因为这是避免解析器

  • 问题内容: 我一直在研究一些Graph QL / React / Relay示例,但遇到了一些奇怪的语法。 在Graph QL Objects中定义字段时,使用以下语法: 根据我的收集,这只是定义一个匿名函数并将其分配给xType.fields。该匿名函数返回包含字段定义的对象。 我假设使用Graph QL模式机制,但必须将其定义为返回对象而不是简单返回对象的函数。但是令我困惑的部分是花括号周围的

  • 问题内容: 我知道上面的箭头功能等效于: 但是我对以下内容有些困惑 为什么函数参数用大括号括起来,而函数主体仅用括号括起来? 问题答案: ES6的一些语法糖元素在这里起作用: 参数解构 :该函数实际上使用一个对象,但是在执行该函数之前,将其唯一的对象参数解构为三个变量。基本上,如果传递给函数的参数称为obj,则为onClick变量分配obj.onClick的值,并与其他命名的分解变量相同。 简洁的