BrowserRouter
Używa API historii , tzn. Jest niedostępne dla starszych przeglądarek (IE 9 i starszych oraz współczesnych). Aplikacja React po stronie klienta może utrzymywać czyste trasy, takie jak example.com/react/route, ale musi być obsługiwana przez serwer WWW. Zwykle oznacza to, że serwer WWW powinien być skonfigurowany dla aplikacji jednostronicowej, tj. To samo index.htmljest obsługiwane dla ścieżki / reakcja / trasy lub dowolnej innej trasy po stronie serwera. Po stronie klienta window.location.pathnamejest analizowany przez router React. Router React renderuje komponent, który został skonfigurowany do renderowania dla / react / route .
Ponadto konfiguracja może obejmować renderowanie po stronie serwera, index.htmlmoże zawierać renderowane komponenty lub dane specyficzne dla bieżącej trasy.
HashRouter
Używa skrótu URL, nie nakłada żadnych ograniczeń na obsługiwane przeglądarki lub serwer WWW. Routing po stronie serwera jest niezależny od routingu po stronie klienta.
Aplikacja jednostronicowa, która jest wstecznie zgodna, może go używać jako example.com/#/react/route . Nie można wykonać kopii zapasowej konfiguracji przez renderowanie po stronie serwera, ponieważ jest to ścieżka / ścieżka obsługiwana po stronie serwera, hash adresu URL # / React / route nie może być odczytywany po stronie serwera. Po stronie klienta window.location.hashjest analizowany przez router React. React Router powoduje składnik, który został przystosowany do renderowania na / reakcji / droga , podobnie BrowserRouter.
Co najważniejsze, HashRouterprzypadki użycia nie są ograniczone do SPA. Witryna może mieć starszy lub przyjazny dla wyszukiwarek routing po stronie serwera, podczas gdy aplikacja React może być widżetem, który utrzymuje swój stan w adresie URL, takim jak example.com/server/side/route#/react/route . Jakaś strona zawierająca aplikację React jest udostępniana po stronie serwera dla / server / side / route , a następnie router React po stronie klienta renderuje komponent, który został skonfigurowany do renderowania dla / react / route , podobnie jak w poprzednim scenariuszu.