Wir bauen unsere Website mit reagieren/reagieren-Router/ReduxServer-Seite mit asynchronen Daten Rendering holt
Wir wollen Server-Seite unsere Seiten machen, die durch die Daten aus unseren Datenquellen gefüllt werden soll. Diese Transaktion muss asynchron sein, und da wir serverseitig rendern möchten, können wir die Funktion "componentDidMount" nicht verwenden.
Im redux Tutorial Seite an Seite Server-Abschnitt Rendering here, hat es sich empfohlen:
Wenn Sie etwas verwenden, wie Router Reaktion, möchten Sie vielleicht auch Ihre Abrufen von Daten Abhängigkeiten als statische FetchData auszudrücken() Methoden auf Ihren Route-Handler-Komponenten. Sie können asynchrone Aktionen zurückgeben, so dass Ihre HandleRender-Funktion die Route zu den Komponentenklassen des Routenhandlers abgleichen, das fetchData() -Ergebnis für jede Komponente senden und erst wiedergeben kann, nachdem die Versprechungen aufgelöst wurden. Auf diese Weise werden die spezifischen API-Aufrufe , die für verschiedene Routen erforderlich sind, mit den Handlerkomponentendefinitionen der Route verknüpft. Sie können dieselbe Technik unter auch auf der Clientseite verwenden, um zu verhindern, dass der Router die Seite wechselt, bis die Daten geladen wurden.
Dies ist derzeit, wie wir unsere Daten holen. Ich persönlich mochte diesen Ansatz nicht, er sieht ziemlich ungeschickt aus und ist zu sehr an die Routing-Bibliothek gekoppelt. Gibt es bessere Möglichkeiten - hoffentlich mit Standard-React/Router/Redux-Komponenten?
"Diese Transaktion muss asynchron sein" Warum? – flup
Sehr oft ist das Abrufen von Daten aus APIs asynchron, sodass Sie den Hauptthread nicht blockieren, besonders wenn Sie von mehreren APIs abrufen, die nicht auf den anderen warten sollen, wenn dies möglich ist. –