Kiedy umieszczasz w aplikacji komponent strony głównej, często jest on opakowany w taki <Route>komponent:
<Route path="/movies" component={MoviesIndex} />
W ten sposób MoviesIndexkomponent ma dostęp do, this.props.historyaby mógł przekierować użytkownika za pomocąthis.props.history.push .
Niektóre komponenty (zwykle komponent nagłówka) pojawiają się na każdej stronie, więc nie są opakowane w <Route>:
render() {
return (<Header />);
}
Oznacza to, że nagłówek nie może przekierować użytkownika.
Aby obejść ten problem, komponent nagłówka można opakować w withRouterfunkcję, gdy jest eksportowany:
export default withRouter(Header)
Daje to Headerdostęp do komponentu this.props.history, co oznacza, że nagłówek może teraz przekierować użytkownika.
withRouterdaje również dostęp domatchilocation. Byłoby miło, gdyby w akceptowanej odpowiedzi wspomniano o tym, ponieważ przekierowanie użytkownika nie jest jedynym przypadkiem użyciawithRouter. Inaczej jest to fajna samo-qna.