Übergeben Sie neue Serverdaten an die Komponenten von react.js

Ich bin neu in React.js und habe Probleme, einige Kernkonzepte zu verstehen, um zu entscheiden, ob wir diese Bibliothek für unsere Anwendung verwenden sollen. Mein Hauptproblem ist eigentlich die Bearbeitung von Updates in Modellen, die vom Server abgerufen wurden.

Stellen Sie sich vor, ich habe eine Seite, auf der fünf verschiedene Modelle angezeigt werden sollen. Ich habe es so aufgebaut, wie es in diesem Artikel beschrieben ist:http://facebook.github.io/react/blog/2013/11/05/thinking-in-react.htmlIch habe also eine "root" -Komponente, bei der alle 5 Modelle bestanden und mit Requisiten zu den Komponenten weitergeleitet werden, die diese Modelle enthalten. Jetzt wurden 2 Modelle aktualisiert (ich erhalte diese Ereignisse aus meinem Modellcode, der sich außerhalb der Reaktionskomponenten befindet) und ich muss dies auf der Benutzeroberfläche reflektieren. Wie geht das am besten?

Ich denke über folgende Optionen nach:

Führen Sie renderComponent erneut mit neuen Daten aus und verlassen Sie sich auf die DOM-Diff-Reaktionstechniken. Ich habe ein Problem damit, da ich dies bei jeder kleinen Datenänderung tun muss.Rufen Sie setState für die Komponenten auf, die diese Modelle enthalten. Auf diese Weise werden Daten nicht zu Requisiten, sondern zu Zuständen, die (soweit ich weiß) keine gute Praxis sind. Außerdem sehe ich keine Möglichkeit, die Referenz auf die untergeordnete Komponente außerhalb der Stammkomponente zu erhalten.Wenn ich mehrere renderComponent-Aufrufe habe, habe ich auf diese Weise Zugriff auf setProps für jede dieser Komponenten. Aber dann muss ich einige Vorlagen erstellen (um alle Container auf der Seite verfügbar zu haben), und die gesamte Reaktionsidee wird zunichte gemacht.Eine Stammkomponente, die alle möglichen Modelle in der Anwendung enthält, wird den Benutzern angezeigt, und setProps wird zum Ändern von Modellen aufgerufen. Meine Sorge hier, dass diese Komponente ziemlich groß wird und irgendwann zu "Spaghetti" wird + Bedenken ab Punkt 1.

Vielen Dank im Voraus und ich hoffe, ich konnte mein Problem klar erklären.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage