Я изучал документацию и не нашел ни одного готового решения для этого сценария, что вы объясняли в вопросе.
Вместо того, чтобы пытаться использовать Redirect
Я создал функционалкомпонент, который был установлен в качестве компонента исходного маршрута. Это помогает в перенаправлении и может использоваться для этой цели, как показано ниже:
<Route path='/foo/:users?/:id?' component={RedirectHelper}/>
<Route path='/bar/:users?/:id?' component={MyComponent}/>
RedirectHelper
выглядит следующим образом:
const RedirectHelper = (props) => {
const {history} = props;
const path = history.location.pathname.replace('/foo', '');
history.push(`/bar${path}`);
return null;
}
Так что технически компонент RedirectHelper
подхватываетзначение из свойства history.location.pathname
для исходного ~foo/users/12345
URL-адреса и создание нового. В конце он просто перенаправляет на ~bar/users/12345
URL. Срок действия оригинала был сохранен. Я проверил это решение и работал как шарм.
Надеюсь, это поможет!