W jaki sposób react-router
prawidłowo obsługuje 404 strony dla zawartości dynamicznej w aplikacji Universal?react-router: Nie znaleziono (404) dla zawartości dynamicznej?
Załóżmy, że chcę wyświetlić stronę użytkownika z trasą taką jak '/user/:userId'
. Chciałbym mieć takiego: config
<Route path="/">
<Route path="user/:userId" component={UserPage} />
<Route path="*" component={NotFound} status={404} />
</Route>
Gdybym zażądać /user/valid-user-id
, mam stronę użytkownika.
Gdybym zażądać /foo
, dostaję właściwego 404.
Ale co jeśli żądania /user/invalid-user-id
. Podczas pobierania danych dla użytkownika zdaję sobie sprawę, że ten użytkownik nie istnieje. Tak, poprawna rzeczą do zrobienia szwy być:
- Wyświetlanie 404
- Powrót kod 404 HTTP (na stronie serwera rendering)
- utrzymać url jak jest (nie chcę przekierowanie)
Jak to zrobić? Szwy przypominają bardzo standardowe zachowanie. Jestem zaskoczony, że nie znaleźliśmy żadnego przykładu ...
Edit:
Szwy to, że nie jestem jedynym, do walki z nim. Coś takiego byłoby bardzo pomocne: https://github.com/ReactTraining/react-router/pull/3098
Jak moja aplikacja nie będzie żyć w najbliższym czasie, postanowiłem poczekać, aby zobaczyć co następna wersja reagować-router ma do zaoferowania ...
Jak pobrać dane użytkownika? Myślę, że kod będzie zasadniczą częścią odpowiedzi, której szukasz. –
@KeesvanLierop Używam redux. Tak więc miałbym akcję powracającą z obietnicą. Błąd zwracany przez obietnicę wskazywałby, że podany identyfikator użytkownika nie istnieje. Domyślnie akcja ta byłaby uruchamiana przez mój komponent UserPage. Ale może lepiej jest zrobić to przed faktycznym renderowaniem komponentu. Nie jestem pewien ... Ale jestem otwarty na sugestie, aby działał z routerem reagującym ... –