Cuando incluye un componente de la página principal en su aplicación, a menudo se incluye en un <Route>componente como este:
<Route path="/movies" component={MoviesIndex} />
Al hacer esto, el MoviesIndexcomponente tiene acceso para this.props.historyque pueda redirigir al usuario con this.props.history.push.
Algunos componentes (comúnmente un componente de encabezado) aparecen en cada página, por lo que no están incluidos en un <Route>:
render() {
return (<Header />);
}
Esto significa que el encabezado no puede redirigir al usuario.
Para solucionar este problema, el componente de encabezado se puede incluir en una withRouterfunción, ya sea cuando se exporta:
export default withRouter(Header)
Esto le da Headeracceso al componente this.props.history, lo que significa que el encabezado ahora puede redirigir al usuario.
withRoutertambién da acceso amatchylocation. Sería bueno si la respuesta aceptada mencionara eso, ya que redirigir al usuario no es el único caso de uso dewithRouter. De lo contrario, este es un buen auto-qna.