React Router изменить URL, если не переданы все параметры - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь исправить проблему в моем приложении, когда мне нужно изменить URL, когда все параметры маршрута не введены в URL пользователем. Вот как выглядит мой роутер:

<Switch>
    <Route path="/A" exact strict component={T3} />
    <Route path="/B" exact strict component={BestOf} />
    <Route path="/C/:id" component={Author} />
    <Route path="/D" exact strict component={About} />
    <Route path="/E" exact strict component={ContactUs} />
    <Route path="/F/:id/:subId" exact strict component={Careers} />
    <Redirect to="/"
</Switch>

Что происходит: если я вхожу в строку URL http://localhost:3000/F/1, приложение перенаправляет на /.

Что я хочу: я хочу изменить такие URL-адреса на http://localhost:3000/F/1/0

Я пытался использовать другой Switch внутри Switch, чтобы справиться с этим, но я не получаю желаемых результатов.

Любая помощь будет оценена. Заранее спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Что можно сделать, это сделать необязательные параметры URL-адреса и перенаправить в компоненте «Карьера» действительный URL-адрес по умолчанию

<Switch>
    <Route path="/A" exact strict component={T3} />
    <Route path="/B" exact strict component={BestOf} />
    <Route path="/C/:id" component={Author} />
    <Route path="/D" exact strict component={About} />
    <Route path="/E" exact strict component={ContactUs} />
    <Route path="/F/:id?/:subId?" exact strict component={Careers} />
    <Redirect to="/" />
</Switch>

теперь в методе визуализации компонента Карьера

render() {
     const { match: { params }} = this.props;
     if (!params.id || !params.subId ) {
        return <Redirect to=`${match.url}/0/0` />
     }
     // rest code here
}
...