我在使用胖箭头功能时遇到了一些问题。如果该函数不是匿名函数,它将抱怨语法并且不会编译。
这个:
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的值,并与其他命名的分解变量相同。 简洁的