Для Reach Router: (https://reach.tech/router/example/)
С указанным точным образцом, единственный способ увидеть, как это сделать (в одной строке), - это подстановочный знак.
Чтобы найти способ воспроизвести это без побочных эффектов, нам нужно будет просмотреть все навигационное меню.
<Router>
<Home path="/*" />
<Chicken path="chicken">
</Router>
...
const Home = props => {
let urlPath = props["*"]
// URL: "/home"
// urlPath === "home"
// URL/: "/"
// urlPath ===""
}
Вы можете продолжить работу с другими путями ниже Home, и маршрутизатор разрешит их обрабатывать.
Посмотрите на пример , использующий подстановочный знак и маршрутизатор достижения на codeandbox, я написал!
Примечание: это универсальное решение, но без разбора параметра - единственныйЛинейное решение, которое я видел.
Некоторые DrawBacks включают Home рендеринг вместо '404' и т. д.
// Это может быть решено с помощью оператора if в вашем рендере
// Он не будет выдавать намеченный URL-адрес ни для / home, и я не рассматривал это, поскольку он не является частью вопроса ... но если он соответствует реквизитам [*], я уверен, что вы могли бы перенаправить или что-то в этом роде.
Вы можете узнать больше о компоненте Route дляr Reach Router. https://reach.tech/router/api/RouteComponent