Tengo un pequeño problema al migrar de React-Router v3 a v4. en v3 pude hacer esto en cualquier lugar:
import { browserHistory } from 'react-router';
browserHistory.push('/some/path');
¿Cómo logro esto en v4.
Sé que me vendría bien, el hocico withRouter
, el contexto de reacción o los accesorios del enrutador de eventos cuando estás en un componente. pero no es el caso para mí.
Estoy buscando la equivalencia de NavigatingOutsideOfComponents en v4
reactjs
react-router
Storm_buster
fuente
fuente
Respuestas:
Solo necesita tener un módulo que exporte un
history
objeto. Luego, importaría ese objeto a lo largo de su proyecto.Luego, en lugar de usar uno de los enrutadores integrados, usaría el
<Router>
componente.fuente
createHashHistory
si estaba usandoHashRouter
.¡Esto funciona! https://reacttraining.com/react-router/web/api/withRouter
fuente
this.props.history.push('/some_route');
para que funcione.const Component = props => {... // stuff}
yexport default withRouter(Component)
trabaja para mí en un componente sin estadoDe manera similar a la respuesta aceptada, lo que podría hacer es usar
react
y élreact-router
mismo para proporcionarle unhistory
objeto que puede incluir en un archivo y luego exportarlo.history.js
Luego, importa el Componente y lo monta para inicializar la variable del historial:
Y luego puede importar en su aplicación cuando se haya montado:
Incluso hice un paquete npm que hace precisamente eso.
fuente
Si está usando redux y redux-thunk, la mejor solución será usar react-router-redux
fuente
Basándose en esta respuesta, si necesita un objeto de historial solo para navegar a otro componente:
fuente
En App.js
Luego, en un componente hijo:
fuente
En el caso específico de
react-router
, el usocontext
es un escenario de caso válido, p. Ej.Puede acceder a una instancia del historial a través del contexto del enrutador, por ejemplo
this.context.router.history
.fuente