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 MoviesIndex
komponent ma dostęp do, this.props.history
aby 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 withRouter
funkcję, gdy jest eksportowany:
export default withRouter(Header)
Daje to Header
dostęp do komponentu this.props.history
, co oznacza, że nagłówek może teraz przekierować użytkownika.
withRouter
daje również dostęp domatch
ilocation
. 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.