Sprache Bindung: Reagieren/JavaScript ES6Reagieren/ES6: Arrow Funktion nicht "das" wie erwartet
Bündelung Tool: Webpack (babel-loader 6.0.0)
Andere Libs Beteiligte: Prospekt
Problem:
Mit der Funktion unter dem Kontext this
auf die Komponente gebunden, wie ich brauche.
Bevor:
componentDidMount: function() {
map.on('draw:created', function(e){
this.setState({someProp:propUpdate});
featureGroup.addLayer(e.layer);
}.bind(this));
}
Aber wenn ich es mit dem Pfeil-Funktion umgeschaltet erwartete ich eine äquivalente Bindung, sondern this
auf einem Beiblatt Klasse geändert o.Class.extend.e
-this.setState
undefiniert bleibt.
Nach:
componentDidMount: function() {
map.on('draw:created', (e) => {
this.setState({someProp:propUpdate});
featureGroup.addLayer(e.layer);
});
}
Frage: Warum ist die Pfeil-Funktion nicht das Äquivalent von mit this
in meinem Fall verbindlich?
Siehe http://stackoverflow.com/questions/38127635/thisarg-of-array-foreach-does-not-reference-as-expected/ – Rayon
@Rayon, dass: Sie könnte so etwas wie dies tun müssen, Beispiel für Pfeilfunktionen in einer '' 'forEach'''-Schleife gibt keine Hinweise, warum mein asynchroner Callback den Bindungsbereich verliert. Schlagen Sie vor, "lexikalische Bindung" unterscheidet sich von es5 Bindung? –
Erhalten Sie nicht 'Fenster' als das, wenn Sie es" loggen "? – Rayon