day*_*ays 2 javascript ecmascript-6 reactjs
我在使用胖箭头功能时遇到了一些问题.如果函数不是匿名的,它会抱怨语法并且不会编译.
这个:
handleItemClick = (e, { name }) => this.setState({ activeItem: name });
Run Code Online (Sandbox Code Playgroud)
给我:
BabelLoaderError: SyntaxError: Unexpected token (20:20)
Run Code Online (Sandbox Code Playgroud)
它指向等号(handleItemClick'=').
然而这很好用:
onClick={ (arg) => {//Do something} };
Run Code Online (Sandbox Code Playgroud)
我的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,
]
}
]
}
};
Run Code Online (Sandbox Code Playgroud)
Ori*_*ori 13
您正在尝试使用不属于ES6的类字段,并且不在es2015中,并且会对预设做出反应.
您可以使用Class属性转换babel插件启用它:
query: {
presets: ['es2015', 'react'],
plugins: ["transform-class-properties"]
}
Run Code Online (Sandbox Code Playgroud)
或者使用babel stage-2预设,包括转换插件:
query: {
presets: ['es2015', 'react', 'stage-2']
}
Run Code Online (Sandbox Code Playgroud)
不要忘记npm install你选择的那个.