Когда вы включаете компонент главной страницы в свое приложение, он часто упаковывается в такой <Route>
компонент:
<Route path="/movies" component={MoviesIndex} />
Таким образом, MoviesIndex
компонент получает доступ this.props.history
и может перенаправить пользователя с помощью this.props.history.push
.
Некоторые компоненты (обычно компонент заголовка) появляются на каждой странице, поэтому не заключены в <Route>
:
render() {
return (<Header />);
}
Это означает, что заголовок не может перенаправить пользователя.
Чтобы обойти эту проблему, компонент заголовка может быть заключен в withRouter
функцию при его экспорте:
export default withRouter(Header)
Это дает Header
компоненту доступ к this.props.history
, а это значит, что заголовок теперь может перенаправлять пользователя.
withRouter
также дает доступ кmatch
иlocation
. Было бы неплохо, если бы в принятом ответе упоминалось это, поскольку перенаправление пользователя - не единственный вариант использованияwithRouter
. В остальном это хорошая самооценка.