TRo*_*esh 18 javascript ecmascript-6 reactjs babeljs ecmascript-next
我已经开始了一个项目,我在后端使用React JS作为后端的节点js.我用webpack捆绑了JS文件.我使用了babel和其他必要的东西.当我在react类中使用箭头函数时,它会产生语法错误.像模块构建失败:SyntaxError:意外的令牌.但我可以在节点中使用箭头功能,没有任何问题.
这是我的webpack配置文件
import path from 'path';
import webpack from 'webpack';
import 'react-hot-loader/patch';
export default{
devtool: 'eval',
entry:[
'react-hot-loader/patch',
'webpack-hot-middleware/client?reload=true',
path.join(__dirname,'client/index.js')],
output:{
path:'/',
publicPath:'/'
},
plugins:[
new webpack.NoErrorsPlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin()
],
module:{
loaders:[
{
test:/\.js$/,
include:path.join(__dirname,'client'),
loaders: ['react-hot-loader/webpack', 'babel']
},
{
test: /\.jpe?g$|\.gif$|\.svg$|\.png$/i,
loader: 'file-loader?name=[name].[ext]'
}
]
},
resolve:{
extension:['','.js']
}
}
Run Code Online (Sandbox Code Playgroud)
我的React文件
class mapSidebar extends React.Component{
constructor(props,context){
super(props,context);
this.state = {
dataSource: []
};
this.handleUpdateInput = this.handleUpdateInput.bind (this);
}
handleUpdateInput = (value) => {
this.setState({
dataSource: [
value,
value + value,
value + value + value,
],
});
};
render(){
return(
<div>
<Paper zDepth={2}>
<div>Hello</div>
<div>
<AutoComplete
hintText="Type anything"
dataSource={this.state.dataSource}
onUpdateInput={this.handleUpdateInput}
/>
</Paper>
</div>
);
}
}
export default mapSidebar;
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
Dan*_*nce 41
这不是引起问题的箭头功能.类属性不是ES6规范的一部分.
handleUpdateInput = (value) => {
// ...
};
Run Code Online (Sandbox Code Playgroud)
如果您希望能够转换此代码,则需要添加类属性babel插件.
或者,此变换作为Babel的第2阶段预设的一部分提供.
使用带有类属性的箭头函数可确保始终使用组件作为值调用方法this
,这意味着此处的手动重新绑定是多余的.
this.handleUpdateInput = this.handleUpdateInput.bind (this);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16591 次 |
最近记录: |