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 Linkcomponente o el Redirectcomponente
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
y luego en el componente que se representa con la /templateruta, 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>'scoincidencia más cercana a
través del withRoutercomponente 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 }.
Routedebe tener acceso athis.props.location,this.props.history, etc. Creo que no es necesario utilizarrefmás con v4. Intenta hacerlothis.props.history.push('/template');