2017-02-09 2 views
0

Ignorieren die reconciliation optimization heuristic, kann jemand definitiv beantworten, ob React eine umgekehrte Baum Traversal oder nur die primäre Render Traversal, die am Wurzelknoten beginnt und progressiv die Kinder macht?Reagiert der Baum beim Rendern rückwärts?

Das ist mir wichtig in einer Situation wie dieser:

const Parent = (props) => { 
    return (
    <Parent> 
     <a /> 
     <B /> 
    </Parent> 
) 
} 

const B = (props) => { 
    if (true) { 
    return <p>I am the letter B</p> 
    } 
} 

Es scheint mir, dass, weil die Parent immer vor den Kindern macht es sich nicht um ihre Sichtbarkeit fragen und Bestimmungen wie zu treffen, ob Teilern hinzufügen oder wie viele Abschnitte erfolgreich geladen wurden oder irgendetwas anderes.

Stimmt es, dass der Baum in Richtung root -> leaves rendert und das ist es?

Kontext: Ich frage, weil in Angular gab es eine bi-directional traversal. Es würde sinken und dann wieder hochklettern, und wenn Sie diese Komplexität verstanden hätten, könnten Sie die Verhaltensweisen, die Sie benötigen, basierend auf der Reihenfolge der Operationen hinzufügen. Nicht sagen, es ist besser oder schlechter, sondern nur als Referenzrahmen.

+0

Ich glaube, react rendert von Kindern aus, wie in Kindern Lifecycle-Methoden vor übergeordneten Lebenszyklus-Methoden aufgerufen werden. –

Antwort

0

Das React-Muster ist ein einseitiger Datenfluss von der Wurzel nach unten. Für das von Ihnen angegebene Beispiel würden Kindattribute im Status gespeichert (unabhängig davon, ob es sich um den lokalen Komponentenstatus oder Anwendungsstatus handelt), zusammen mit anderen Eigenschaften, die in der Logik bedingt rendern können.

Das allgemeine Muster ist, dass Zustandsdaten nach unten fließen, Zustandsänderungen (Ereignisse usw.) nach oben.