Компонент Switch
отображает первый маршрут, который соответствует введенному вами URL
Поскольку вы используете подстановочный знак для GeneralData
Маршрута, вот так
<Route path="/patients/:id" component={GeneralData}/>
Независимо от того, что вы вводите после /patients
, оно попадает в это определение подстановочного знака этого Маршрута, потому что оно принимает буквально все что угодно. Таким образом, даже если вы перейдете к /patients/4834834/history
, он все равно будет удовлетворять маршруту GeneralData
, который был найден первым в списке маршрутов.
Чтобы это исправить, просто переместите ваш исторический маршрут над вашим маршрутом GeneralData. Это делает так, чтобы маршрут GeneralData
не отображался ни для чего, что только удовлетворяет /patients/:id
. Switch
сначала проверит, соответствует ли ваш URL History
.
<Switch>
<Route path="/patients/:id/history" component={History} />
<Route path="/patients/:id" component={GeneralData} />
</Switch>