En primer lugar, no necesita hacer var r = this;
esto enif statement
refiere al contexto de la devolución de llamada en sí, que como está utilizando la función de flecha se refiere al contexto del componente Reaccionar.
Según los documentos:
Los objetos de historial suelen tener las siguientes propiedades y métodos:
Entonces, mientras navegas, puedes pasar accesorios al objeto de historia como
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
o de manera similar para el Link
componente o el Redirect
componente
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
y luego en el componente que se representa con la /template
ruta, puede acceder a los accesorios pasados como
this.props.location.state.detail
También tenga en cuenta que, al usar el historial o los objetos de ubicación de accesorios, debe conectar el componente withRouter
.
Según los documentos:
withRouter
Puede obtener acceso a las propiedades del objeto de historial y la <Route>'s
coincidencia más cercana a
través del withRouter
componente de orden superior. withRouter
volverá a renderizar su componente cada vez que la ruta cambie con los mismos accesorios que <Route>
render props: { match, location, history }
.
Route
debe tener acceso athis.props.location
,this.props.history
, etc. Creo que no es necesario utilizarref
más con v4. Intenta hacerlothis.props.history.push('/template');