Параметр Route на первом месте всегда перемонтирует компонент - React Router v4 - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь использовать 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 все работает нормально.

Есть ли какие-либо известные обходные пути, позволяющие иметь параметр маршрута на первом месте в пути без перемонтирования компонентов?

...