Когда вы включаете компонент главной страницы в свое приложение, он часто упаковывается в такой <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. В остальном это хорошая самооценка.