Если я правильно понимаю ситуацию, то я думаю, что решение состоит в том, чтобы изменить порядок ваших <Route />
компонентов в вашем <Switch />
следующим образом:
<Router>
<Switch>
{/* Set this route as the first in the switch /*}
<Route exact path='/NewPage/:Key/:optional?' render={(props) => <NewPage />} />
<Route exact path='/TestSite' render={(props) => <TestSite/>} />
{/* Set this route as last in the switch /*}
<Route exact path='/:Key/:optional?' render={(props) => <MainPage key={props.match.params.key} optional={props.match.params.optional} />} />
</Switch>
</Router>
Причина в том, чтоПриоритет маршрута основан на порядке, в котором маршруты определены в коммутаторе.
Таким образом, при навигации по <Link to="/NewPage/Key">
часть маршрута NewPage
будет соответствовать :Key
, а часть маршрута Key
будет соответствовать :optional?
.При переупорядочении маршрутов, как показано, в этом случае ожидаемый компонент <NewPage />
должен отображаться для <Link to="/NewPage/Key">
.
Надеюсь, что это поможет!