reactjs
react-router
LondresRob
fuente
fuente
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.historyomatchno están presentes por defecto. es decir, ¿por quéwithRouterdebería mencionarse explícitamente?withRouteres un componente de orden superior que pasará la ruta más cercanamatch, la actuallocationy loshistoryaccesorios al componente envuelto siempre que se procese. simplemente conecta el componente al enrutador.No todos los componentes, especialmente los componentes compartidos, tendrán acceso a los accesorios de dicho enrutador. Dentro de sus componentes envueltos, podrá acceder a
locationprop y obtener más información comolocation.pathnameo redirigir al usuario a una URL diferente usandothis.props.history.push.Aquí hay un ejemplo completo de su página de github:
Puede encontrar más información aquí .
fuente
withRouterEl componente de orden superior le permite acceder a lashistorypropiedades del objeto y la<Route>coincidencia más cercana .withRouterpasará los accesorios actualizadosmatch,locationyhistoryal componente envuelto siempre que se procese.fuente
withRouter es un componente de orden superior que pasará la ruta más cercana para obtener acceso a alguna propiedad en cuanto a la ubicación y la coincidencia de los accesorios, solo se puede acceder si se le da al componente la propiedad ubicada en el componente
y la misma prosperidad de coincidencia y ubicación para poder cambiar la ubicación y usar this.props.history.push debe proporcionarse para cada componente que debe proporcionar la propiedad, pero cuando se usa WithRouter puede ser acceso a la ubicación y coincidencia sin agregar el historial de propiedad. Se puede acceder a la dirección sin agregar historial de propiedades para cada ruta.
fuente