Prima di tutto, non è necessario fare var r = this;ciò poiché si if statementriferisce al contesto del callback stesso che, poiché si sta utilizzando la funzione freccia, si riferisce al contesto del componente React.
Secondo i documenti:
gli oggetti della cronologia in genere hanno le seguenti proprietà e metodi:
Quindi durante la navigazione puoi passare oggetti di scena all'oggetto storia come
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
o similmente per il Linkcomponente o il Redirectcomponente
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
e poi nel componente che è reso con /templateroute, puoi accedere agli oggetti di scena passati come
this.props.location.state.detail
Inoltre, tieni presente che, quando usi oggetti di cronologia o posizione dagli oggetti di scena, devi connettere il componente withRouter.
Secondo i documenti:
withRouter
È possibile accedere alle proprietà dell'oggetto storico e alla <Route>'scorrispondenza più vicina
tramite il withRoutercomponente di ordine superiore. withRouter
ridistribuirà il suo componente ogni volta che il percorso cambia con gli stessi oggetti di scena del <Route>rendering props: { match, location, history }.
Routedovrebbe avere accesso athis.props.location,this.props.historyecc penso che non c'è bisogno di utilizzarerefpiù con v4. Prova a farethis.props.history.push('/template');