React-router v4 необязательный параметр - PullRequest
1 голос
/ 17 октября 2019

Я хочу создать необязательный URL-адрес параметра, используя Reaction-router v4.2.0

Я хочу, чтобы URL был похож на "/car-rental-service-in-manhattan-new-york" || "/car-rental-service-in-new-york";

Оба URL должны отображать страницы. Здесь Манхэттен не является обязательным. Я пробовал путь как путь: "/:keywords-in(-: boroughs)?-:city".

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Чтобы ограничить параметры вашего маршрута, попробуйте следующее решение:

<Route
   path="/car-rental-service-in-:city(york|newe)"
   component={City}
/>

Чтобы заменить пробел дефисом,

    var str = this.props.match.params;
    str = str.replace(/\s+/g, '-').toLowerCase();

<Route
    path="/car-rental-service-in-:str "
    component={City}
/>

Если вы хотите заменить пробел надефис много Компонентов, тогда вы можете ввести компонент высшего порядка (HOC)

0 голосов
/ 17 октября 2019

попробуй вот так

let city = window.location.pathname
    .replace('/car-rental-service-in-', '')
    .replace('-new-york', '');

{city ? (
  <Route
    path={'/car-rental-service-in-:city-new-york'}
    exact
    component={PageNotFound}
  />
) : (
  <Route
    path={'/car-rental-service-in--new-york'}
    exact
    component={PageNotFound}
  />
)}
...