BrowserRouter
Він використовує API історії , тобто недоступний для застарілих браузерів (IE 9 і старіших версій та сучасників). Клієнтська програма React здатна підтримувати чисті маршрути, такі як example.com/react/route, але має бути підтримана веб-сервером. Зазвичай це означає, що веб-сервер повинен бути налаштований на односторінковий додаток, тобто той самий index.html
подається для шляху / реакції / маршруту або будь-якого іншого маршруту на стороні сервера. На стороні клієнта window.location.pathname
аналізується React-маршрутизатором. Маршрутизатор React відображає компонент, який він був налаштований на візуалізацію / реакцію / маршрут .
Крім того, налаштування може передбачати візуалізацію на стороні сервера, index.html
може містити відтворені компоненти або дані, які є специфічними для поточного маршруту.
HashRouter
Він використовує хеш URL-адреси, він не обмежує підтримувані браузери або веб-сервер. Серверна маршрутизація не залежить від маршрутизації на стороні клієнта.
Зворотно сумісна односторінкова програма може використовувати її як example.com/#/react/route . Налаштування неможливо створити резервною копією за допомогою рендеринга на стороні сервера, оскільки це / path, який подається на стороні сервера, # / response / route хеш URL-адреси не може бути прочитаний з боку сервера. На стороні клієнта window.location.hash
аналізується React-маршрутизатором. Маршрутизатор React відображає компонент, який він був налаштований на візуалізацію / реакцію / маршрут , подібно до BrowserRouter
.
Найголовніше, HashRouter
випадки використання не обмежуються SPA. Веб-сайт може мати застарілу або зручну для пошукової системи маршрутизацію на стороні сервера, тоді як програма React може бути віджетом, який підтримує свій стан у URL-адресі, наприклад example.com/server/side/route#/react/route . Деяка сторінка, що містить додаток React, подається на стороні сервера для / server / side / route , а потім на стороні клієнта React router відображає компонент, який він був налаштований для візуалізації для / response / route , подібно до попереднього сценарію.