babel 编译后 this 变成了 undefined
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近有在用webpack,使用了babel这个模块来编译js jsx文件,但是发现文件编译后this变成了undefined。 源文件 module.exports = React.createClass({ render: () => { return (<div>{this.props.name}</div>); } }); 编译后 module.exports = React.createClass({ render: () => { return (<div>{undefined.props.name}</div>); } }); 这个原因是因为webpack规则中babel用了es2015的编译规则 { test: /\.jsx?$/, loader: "babel", query: { presets: ['react', 'es2015'] } } 解决的方法是这样修改 module.exports = React.createClass({ render: function(){ return (<div>{this.props.name}</div>); } }); 其根本的原因是es2015的箭头函数,这个一个不能忽视的问题 普通function函数和箭头函数的行为有一个微妙的区别