Steuerung der Reihenfolge des Reagierens von Komponenten

8

Wie Sie wissen, werden React-Komponenten parallel gerendert. Es gibt keine Garantie, dass sie das Rendern beenden.

Ich möchte die folgenden Komponenten in genau dieser Reihenfolge darstellen:

  1. InterviewContentMain (weil es den Header

    rendert. Ich brauche diesen Header, um zuerst zu rendern, damit ich nach der Wiedergabe in meinen anderen beiden Komponenten darauf reagieren kann. Ich werde JS darauf ausführen usw. später von den Komponenten componentDidMount der anderen beiden Komponenten, deshalb möchte ich das zuerst rendern)

  2. InterviewContainer (sollte nur gerendert werden, nachdem InterviewContentMain gerendert wurde)
  3. TableOfContents (sollte nur gerendert werden, nachdem InterviewContainer und InterviewContentMain gerendert wurden)

Hier ist ein wenig mehr Kontext Ссылка

Ich habe eine Menge Dinge ausprobiert, wie Sie mit den Lebenszyklus-Methoden sehen können, was wahrscheinlich völlig falsch ist oder nicht einmal sicher ist, was die Leute überhaupt für ein solches Szenario tun, aber bisher kein Glück.

%Vor%

UPDATE:

hier ist was ich versucht habe. Während sie alle 3 rendern, bekomme ich immer noch Zeiten, wo TableOfContents vor InterviewContentMain oder InterviewContent rendert, was TableOfContent nach gerenderten Überlappungen <p className="section-heading bold font-22" id="interview-heading">Interview</p> bedeutet, anstatt darunter zu rendern aufgrund der sticky JS, die ich in TableOfContents anzuwenden versuchte

%Vor%     
PositiveGuy 17.08.2016, 03:53
quelle

2 Antworten

2

Wenn Sie eine Komponente bedingt rendern möchten, müssen Sie sie in eine bedingte (ob eine Funktion oder einen booleschen Inline-Ausdruck) einfügen.

Sie sagen:

  

TableOfContents (sollte nur gerendert werden, nachdem InterviewContainer und InterviewContentMain gerendert wurden)

.. Überprüfen Sie also in der render -Methode von TableOfContents des übergeordneten Containers, ob einige Werte wahr sind, wie in einer if -Anweisung.

%Vor%     
azium 17.08.2016, 04:45
quelle
0

Sie rufen setState in componentDidMount auf. Nennen Sie es in componentWillMount . Es ist ein Anti-Pattern, das setState in componentDidMount sofort aufruft, weil componentDidMount das render aufruft, siehe diese Diskussion .

Ich habe eine etwas andere Syntax verwendet, aber es sollte klar verständlich sein.

%Vor%     
Ashish Chaudhary 17.08.2016 09:01
quelle

Tags und Links