Reagiere componentDidMount vs getInitialState

8

Ich habe einige Fragen über die Verwendung und Muster der Reaktion.

Soll ich

verwenden? %Vor%

oder

%Vor%

beim asynchronen Laden von Daten? Was ist der Unterschied zwischen den beiden?

Ich benutze Backbone für meine Frontend-Datenstrukturen

%Vor%

Update: Danke für die Antworten

Dies Frage schlägt vor, uns componentWillMount nicht zu verwenden, aber ich verstehe, dass es aussagekräftiger ist, in diesem Fall componentDidMount zu verwenden, als getInitialState scheint soll synchron verwendet werden

Update 2:

Ich musste auf getInitialState zurückgreifen, da componentDidMount nach dem Rendern ausgelöst wird und ich brauche this.props.data, um auf ein Objekt zu zeigen

    
Dan Baker 30.06.2015, 19:12
quelle

3 Antworten

9

componentDidMount würde aufgerufen werden, nachdem die Komponente in das Browser-DOM eingebunden wurde (sie würde nach dem ersten Rendern aufgerufen werden und würde nicht aufgerufen werden, wenn Sie serverseitig (in einen String) rendern würden

getInitialState wird aufgerufen, wenn die Komponente erstellt wird. Wenn Sie die ES6-Klassensyntax verwenden, können Sie diese Logik in Ihren Komponentenkonstruktor einfügen und direkt this.state

zuweisen

Es gibt auch componentWillMount es würde vor dem ersten Render für Server und Client aufgerufen werden - es ist in Ihrem Fall besser geeignet.

    
Bogdan Savluk 30.06.2015 19:21
quelle
3

Componentndid mount wird nach dem Rendern ausgelöst und wir laden das Ajax in das Objekt. Während des Rendervorgangs überprüfen wir, ob das Objekt Daten enthält, andernfalls senden wir ein leeres div

%Vor%     
Rajat banerjee 30.06.2015 23:17
quelle
1

Ich bin mir über diese Backbone-Verwendung nicht sicher, aber wenn Sie Daten in componentDidMount laden, ist das in Ordnung, da der Code nach der ersten Wiedergabe der Komponente ausgeführt wird - nachdem die Daten abgerufen und der Status erneut festgelegt wurde. Die Komponente wird erneut gerendert und zeigt an diesem Punkt die korrekten Daten an. Diese Art von wie faulen Laden für mich.

Ich bin mir nicht sicher, ob getInitialState blockiert, aber wenn dies der Fall ist, wird die Komponente erst wiedergegeben, wenn der Status geladen ist. Aber ich denke, es ist nicht so, die Daten würden wahrscheinlich nicht abgerufen werden, wenn die Komponente gerendert wird.

componentWillMount ist möglicherweise das, was Sie möchten, aber überprüfen Sie den React lifecycle für das, was Sie tun Denken macht am meisten Sinn.

    
Joseph Furlott 30.06.2015 19:18
quelle

Tags und Links