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 MoviesIndex
componente tiene acceso para this.props.history
que 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 withRouter
función, ya sea cuando se exporta:
export default withRouter(Header)
Esto le da Header
acceso al componente this.props.history
, lo que significa que el encabezado ahora puede redirigir al usuario.
withRouter
también da acceso amatch
ylocation
. 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.history
omatch
no están presentes por defecto. es decir, ¿por quéwithRouter
debería mencionarse explícitamente?withRouter
es un componente de orden superior que pasará la ruta más cercanamatch
, la actuallocation
y loshistory
accesorios 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
location
prop y obtener más información comolocation.pathname
o 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
withRouter
El componente de orden superior le permite acceder a lashistory
propiedades del objeto y la<Route>
coincidencia más cercana .withRouter
pasará los accesorios actualizadosmatch
,location
yhistory
al 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