【发布时间】:2016-11-04 11:20:17
【问题描述】:
语言:React/JavaScript ES6
打包工具:Webpack(babel-loader 6.0.0)
涉及的其他库:传单
问题:
使用上下文this下面的函数绑定到
我需要的组件。
之前:
componentDidMount: function() {
map.on('draw:created', function(e){
this.setState({someProp:propUpdate});
featureGroup.addLayer(e.layer);
}.bind(this));
}
但是当我将它切换到使用我期望的箭头功能时
等效绑定,但 this 更改为传单类
o.Class.extend.e - 留下 this.setState 未定义。
之后:
componentDidMount: function() {
map.on('draw:created', (e) => {
this.setState({someProp:propUpdate});
featureGroup.addLayer(e.layer);
});
}
问题:为什么使用箭头函数不等同于
在我的情况下绑定this?
【问题讨论】:
-
@Rayon
forEach循环中的箭头函数示例没有提供任何线索,为什么我的异步回调失去了绑定范围。您是否建议“词法绑定”与 es5 绑定不同? -
似乎是您的环境/转译器中的一个错误。尽管 Babel 应该可以正常工作。代码本身看起来不错。如果我们无法重现该问题,我怀疑我们能提供多少帮助。
-
到目前为止,我认为@FelixKling 可能是对的。 “反应”:“^0.14.0”,“webpack”:“^1.12.1”,“babel-core”:“^6.6.4”,“babel-loader”:“^6.2.4”,“babel” -polyfill”:“^6.9.1”,“babel-preset-es2015”:“^6.6.0”,“babel-preset-react”:“^6.5.0”,“babel-preset-stage-0” : "^6.5.0"
-
尝试升级到最新版本的 babel。
标签: javascript reactjs ecmascript-6 leaflet arrow-functions