Reagieren componentDidMount vs getInitialState
Ich habe einige Fragen zu reagieren, die Nutzung und mustern.
Sollte ich
componentDidMount
oder
getInitialState
beim laden der Daten asynchron? Was ist der Unterschied zwischen den beiden?
Ich bin mit Rückgrat für meine frontend-Daten-Strukturen
this.props.data = new BrandModel({ _id: this.props.params.brandId });
var that = this;
this.props.data.fetch({
success: function () {
that.setState({ brand: that.props.brand });
}
});
return null;
Update: danke für die Antworten
Diese Frage ist was für uns nicht componentWillMount, aber ich verstehe, dass Ihr mehr Ausdruckskraft zu verwenden componentDidMount in diesem Fall als getInitialState zu sein scheint, dazu genutzt werden, um synchron
Update 2:
Habe ich wieder mit getInitialState als componentDidMount feuert nach dem Rendern und ich brauche diese.Requisiten.die Daten zeigen auf ein Objekt
Du musst angemeldet sein, um einen Kommentar abzugeben.
componentDidMount
wäre aufgerufen, nachdem die Komponente montiert war, in browser-DOM (nennt man das nach dem ersten Rendern und es würde nicht aufgerufen werden, wenn Sie rendering-server-Seite(in string)getInitialState
wäre aufgerufen, wenn die Komponente erstellt, wenn Sie mit es6-Klasse syntax, die Sie platzieren können, dass die Logik in der Sie die Komponente Konstruktor direkt die Zuordnung zuthis.state
Gibt es auch
componentWillMount
es aufgerufen werden würde, vor dem ersten Rendern für server-und client - es ist mehr geeignet in Ihrem Fall.Componentndid mount ausgelöst wird, nachdem die render-und wir laden die Ajax-innen, die.Während während des eigentlichen render-wir prüfen, ob das Objekt hat Daten, die sonst senden, leeren div -
Ich bin mir nicht sicher über dieses Backbone-Nutzung, aber wenn Sie das laden der Daten in
componentDidMount
das ist in Ordnung so im wesentlichen, die code ausführen, nachdem die Komponente ist zunächst gerendert -- nachdem die Daten abgerufen werden und der Staat wieder gesetzt, wird die Komponente re-render zeigt, dass die richtigen Daten an diesem Punkt. Diese Art von wie lazy loading zu mir.Ich bin mir nicht sicher, ob
getInitialState
blockiert, aber wenn es so ist, dann wird die Komponente nicht gerendert wird, bis der Zustand geladen wird. Aber ich denke, es ist nicht möglich, also würde die Daten wahrscheinlich nicht abgerufen werden, durch die Zeit, die die Komponente gerendert wird.componentWillMount
können, was Sie wollen, aber überprüfen Sie die Reagieren lifecycle für das, was Sie denken, am meisten Sinn macht.getInitialState
ist nicht blockiert — nicht Reagieren-Funktion ist, es sei denn man hat so etwas wiewhile (true) { console.log('a-long-loop'); }