Как отобразить компонент React с помощью react-router-dom, вручную используя HTML5 history API?

#javascript #reactjs #react-router

#javascript #reactjs #react-router

Вопрос:

Я конвертирую приложение (ранее в jQuery / HTML / CSS) в React. Приложение имеет много модулей, и каждый модуль имеет много подмодулей. Я постепенно пытаюсь обновить каждый подмодуль до React. Проблема в том, что боковой панели нет в React.

Есть два подмодуля, которые я преобразовал в React. Проблема в том, что когда кто-то нажимает на ссылку на боковой панели, вся страница перезагружается, и ресурсы снова будут загружены.

Если кто-то открыл любую из двух страниц, которые я преобразовал в React, а затем пытается перейти на другую страницу (также написанную на React), она не должна перезагружаться для нее. Это должно работать так, как будто они используют Link компонент для перемещения.

Я думал имитировать эту функцию, используя HTML5 history API. Использование history.pushState изменило URL, но react-router не отображает соответствующий компонент по этому URL.

Я знаю, что есть какой-то обходной путь с HashRouter , но вместо этого я хочу использовать BrowserRouter .

Для обеих страниц я отображаю один и тот же шаблон из серверной части и логику маршрутизации, делегированную react-router.

Для начала я создал демонстрационную версию codesandbox. Пожалуйста, настройте его и попытайтесь заставить его работать при нажатии на URL-адреса (без Link ), поскольку Link компонент ведет себя в react-router.