2013-06-25 27 views
5

Ich habe Probleme zu verstehen, wie Kontext in Facebook React JS Framework funktioniert.Kontext in Facebook React JS-Framework

Bei der Übergabe einer Spezifikation an React.createClass scheinen bestimmte Methoden (insbesondere Event-Handler) die Verwendung von React.autoBind erforderlich, um Callbacks an die Komponente zu binden. Andere Methoden (insbesondere render()) haben diese Voraussetzung nicht, verweisen aber gerne auf this.props oder this.state.

Was ist der Kontext von 'this', wie von der render() -Methode verwendet, wenn es nicht die Komponente ist?

Antwort

3

Das ist, weil sie bereits Art autoBind für interne Methoden wie render tut. In der Tat, wenn Sie autoBind aufrufen und diese Methoden übergeben, erhalten Sie eine Fehlermeldung.

Für benutzerdefinierte Methoden ist zunächst die Idee, dass Sie den Kontext beibehalten möchten, den Sie zuweisen möchten. Dies wird jedoch in 0.4.x (http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html) geändert.

Grundsätzlich, weil die gebundene this die meiste Zeit ist, was Sie wollen, von nun an wird jede Methode in createClass jetzt autoBind standardmäßig.

0

In jeder Komponente-Framework (und nicht nur reagieren), müssen Event-Handler manuelle Verwaltung der this Referenz, weil sie in das DOM als Callback-Funktion registriert sind, nicht Methode. In Reaktion 0.3 können Sie die this Referenz selbst binden, oder Sie können React.autoBind verwenden, die effizienter ist. In React 0.4 werden alle Event-Handler durch das Framework auf ihrem Weg in das DOM gebunden, so dass Sie nicht mehr darüber nachdenken müssen.

daher ist die this Referenz immer eine Referenz auf eine reaktive Komponenteninstanz.