Я хочу объявить путь с необязательным параметром путь, поэтому, когда я добавить его на страницу, чтобы сделать что-то экстра (например, заполнить некоторые данные):
http://localhost/app/path/to/page <= отобразить страницу http://localhost/app/path/to/page/pathParam <= отобразить страницу с По некоторым данным согласно pathParam
В моем роутере реагировать у меня такой путь, чтобы поддержать два варианта (это упрощенный пример):
<Router history={history}>
<Route path="/path" component={IndexPage}>
<Route path="to/page" component={MyPage}/>
<Route path="to/page/:pathParam" component={MyPage}/>
</Route>
</Router>
На мой вопрос, мы можем объявить его в одном маршрут? Если я добавить только второй ряд, то маршрут без параметра не нашел.
Редактировать#1:
Решение упомянутых здесь О следующий синтаксис не работает для меня, это нормально? Существует ли она в документации?
<Route path="/product/:productName/?:urlID?" handler={SomeHandler} />
Мой реагировать-маршрутизатор версия: 1.0.3
Редактировать ты запостил относится к более старой версии реагировать-маршрутизатор (версия v0.13) и не'т работать больше.
Начиная с версии 1.0.0
можно определить дополнительные параметры с:
<Route path="to/page(/:pathParam)" component={MyPage} />
и для нескольких Дополнительно Параметры:
<Route path="to/page(/:pathParam1)(/:pathParam2)" component={MyPage} />
Вы используете скобки (
)
для того чтобы обернуть вариативной части маршрута, включая символ косой черты (/
). Проверьте соответствие гида по маршруту страница официальной документации.
Примечание: в :параметра paramName
соответствует сегмент URL-адреса до следующего /
, ?
, или #
. Подробнее о пути и params в частности, Подробнее здесь.
Маршрутизатор реагировать V4 является принципиально иной, чем В1-В3, а также дополнительных параметров пути, разве'т быть явно определены в официальная документация либо.
Вместо этого, вы поручили определить параметр путь
, что путь-к-выражение понимает. Это позволяет гораздо большую гибкость в определении своего пути, как повторять узоры, шаблоны, и т. д. Поэтому для определения параметра как опционально можно добавить трейлинг-вопросительный знак (?
).
Как таковой, определить необязательный параметр, вы:
<Route path="/to/page/:pathParam?" component={MyPage} />
и для нескольких Дополнительно Параметры:
<Route path="/to/page/:pathParam1?/:pathParam2?" component={MyPage} />
Примечание: реагировать маршрутизатор V4 является несовместимы с [тег:реагировать-маршрутизатор-реле] (подробнее здесь). Использовать версии v3 или выше (В2 рекомендуется) вместо.
Для любого маршрутизатора реагировать В4 пользователи приехав сюда после поиска, необязательные параметры в <маршрут>
обозначаются знаком?
- суффикс.
Здесь'с соответствующей документацией:
https://reacttraining.com/react-router/web/api/Route/path-string
пути: строкой
любой допустимый URL-адрес, что путь-к-выражение понимает.
<маршруту пути=" по - /пользователи/:ИД" и компонент={пользователь}/>
https://www.npmjs.com/package/path-to-regexp#optional
дополнительно
параметры могут быть suffixed с вопросительным знаком (?) для того чтобы сделать параметр необязательным. Это также позволит сделать префикс необязательно.
Простой пример секции с разбивкой на страницы сайта, которые могут быть доступны с или без номера страницы.
<Route path="/section/:page?" component={Section} />
Рабочая синтаксиса для нескольких необязательных параметров:
<Route path="/section/(page)?/:page?/(sort)?/:sort?" component={Section} />
Теперь, URL-адреса могут быть: