Я попытался перенаправить параметры ": id" в ответ с подчиненным маршрутом ": id / history" и ссылка на маршрут не отображала компонент при нажатии

<Switch>
     <Route path="/patients/:id" exact component={GeneralData} />
     <Route path="/patients/:id/history" component={History} />
</Switch>
0
Siddharta Naranjo 27 Май 2019 в 21:43

2 ответа

Лучший ответ

Компонент 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>
1
Christopher Ngo 27 Май 2019 в 19:28

Я думаю, что вы пропускаете exact параметр.

0
David 27 Май 2019 в 18:49