React Tutorial- warum binden Sie dies in Ajax-Aufruf

8

Ich mache jetzt Tutorial, und wundere mich über die Bindung in Ajax Anruf. Warum müssen wir dies für Erfolg und Fehler im Ajax-Aufruf binden? Anscheinend, wenn ich Bindung lösche, wirft die Funktion einen Fehler. Verwenden wir bindend, weil wir this.setState in der Funktion haben und eine richtige Referenz benötigen?

%Vor%     
Brian Hsu 05.04.2015, 00:11
quelle

3 Antworten

12

this bezieht sich auf das Objekt, das die Funktion aufgerufen hat. bind 's erstes Argument ist der Wert von this . Also function(data){...}.bind(an_object) kann gelesen werden als "rufe diese Funktion auf, aber setze this in der Funktion auf an_object " . Im Fall des React-Lernprogramms bezieht sich an_object auf die React-Komponente. Also:

%Vor%

this bezieht sich auf das AJAX-Objekt. console.log(this) gibt uns

%Vor% %Vor%

this bezieht sich auf die React-Komponente. console.log(this) gibt uns

%Vor%

Für eine weitere Lektüre erklärt Nicholas Zakas Buch Objektorientiertes JavaScript ausführlich, wie bind funktioniert.

    
Keith Yong 05.04.2015, 13:42
quelle
4

Die Anweisung entspricht

%Vor%     
Jihad Waspada 20.04.2015 06:56
quelle
2

Oh, ich habe es herausgefunden! Nach dem Verwenden des Dev-Tools zum Überprüfen des "readClass.createClass.Constructor" . Der Grund, dies im Erfolg und Fehler des Ajax-Aufrufs zu binden, besteht darin, sicherzustellen, dass wir das richtige "Dies" haben, wenn wir this.setState({data:data}); oder console.error(this.props.url, status, err.toString());

aufrufen

Wenn wir "das" nicht binden. wir haben das richtige Reaction "this" verloren, und "this" könnte in jedem Moment Fenster, jQuery oder anderes werden. Das ist der Grund, warum wir den Fehler "Uncaught TypeError: undefined ist keine Funktion" erhalten haben.

    
Brian Hsu 05.04.2015 00:28
quelle

Tags und Links