Я пытаюсь использовать React Router таким образом, чтобы параметр маршрута был первым на пути маршрута, например (см. Параметр 'siteId')
<Route path={"/:siteId/calendar/:calendarId?" component={Calendar} />
<Route path={"/:siteId/client/:clientId?" component={Calendar} />
...
Проблема, с которой я столкнулсяСмысл в том, что React Router будет перемонтировать (размонтировать + монтировать) компонент каждый раз, когда я перенаправляю пользователя (используя history.push), даже если новый путь проходит через точно такой же компонент <Route>
.
Напримернахождение на пути /someSiteId/calendar/someCalendarId
и вызов history.push("someOtherSiteId/calendar/someOtherCalendarId")
разрешатся в том же <Route>
, что и в настоящий момент при рендеринге, но вместо повторного рендеринга этого уже смонтированного компонента он снова смонтирует его.
Насколько я мог проверить, я понял, что такое поведение происходит из-за динамического параметра в начале пути маршрута.При использовании static все работает нормально.
Есть ли какие-либо известные обходные пути, позволяющие иметь параметр маршрута на первом месте в пути без перемонтирования компонентов?