Budujemy naszą stronę internetową z reagują/reagują-routera/Reduxrenderowania po stronie serwera z danymi asynchronicznych sprowadzić
Chcemy stronie serwera czynią nasze strony, które powinny zostać wypełnione przez dane z naszych źródeł danych. Ta transakcja musi być asynchroniczna i niestety, ponieważ chcemy renderować po stronie serwera, nie możemy użyć funkcji "componentDidMount".
Na stronie samouczka Redux na stronie serwera sekcję here rendering, że została powiadomiona do:
Jeśli używasz coś podobnego React routera, można także chcą wyrazić swoimi danymi pobieranie dużej zależności jak fetchData statycznych() Metody na komponentach obsługi trasy dla trasy . Mogą one zwracać akcje asynchroniczne, dzięki czemu funkcja handleRender może dopasowywać trasę do klas komponentu obsługi trasy , wywoływać wynik fetchData() dla każdego z nich i renderować tylko po ustąpieniu obietnic. W ten sposób specyficzne wywołania API wymagane dla różnych tras są kolokowane z definicjami komponentów programu obsługi trasy . Można również użyć tej samej techniki po stronie klienta, aby uniemożliwić routerowi przełączanie strony, dopóki jej dane nie zostaną załadowane.
To jest sposób, w jaki obsługujemy pobieranie danych. Osobiście nie podobało mi się to podejście, wygląda na dość niezgrabne i jest zbyt połączone z biblioteką routingu. Czy są na to lepsze sposoby - mam nadzieję, ze standardowymi komponentami reagowania/router/redux?
"Ta transakcja musi być asynchroniczna" Dlaczego? – flup
Bardzo często pobieranie danych z interfejsów API jest asynchroniczne, więc nie blokujesz głównego wątku, zwłaszcza jeśli pobierasz z wielu interfejsów API, których nie chcesz, aby jeden czekał na drugi, jeśli to możliwe. –