Prima di tutto, non è necessario fare var r = this;
ciò poiché si if statement
riferisce 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 Link
componente o il Redirect
componente
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
e poi nel componente che è reso con /template
route, 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>'s
corrispondenza più vicina
tramite il withRouter
componente 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 }
.
Route
dovrebbe avere accesso athis.props.location
,this.props.history
ecc penso che non c'è bisogno di utilizzareref
più con v4. Prova a farethis.props.history.push('/template');