Zunächst müssen Sie dies nicht tun, var r = this;
da sich dies if statement
auf den Kontext des Rückrufs selbst bezieht, der sich, da Sie die Pfeilfunktion verwenden, auf den Kontext der React-Komponente bezieht.
Laut den Dokumenten:
Verlaufsobjekte haben normalerweise die folgenden Eigenschaften und Methoden:
Während der Navigation können Sie Requisiten wie an das Verlaufsobjekt übergeben
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
oder ähnlich für die Link
Komponente oder die Redirect
Komponente
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
und dann können Sie in der Komponente, die mit /template
route gerendert wird , auf die Requisiten zugreifen, die wie übergeben wurden
this.props.location.state.detail
Beachten Sie auch, dass Sie die Komponente verbinden müssen, wenn Sie Verlaufs- oder Standortobjekte von Requisiten verwenden withRouter
.
Gemäß den Dokumenten:
withRouter
<Route>'s
Über die withRouter
Komponente höherer Ordnung können Sie auf die Eigenschaften des Verlaufsobjekts und die engste
Übereinstimmung zugreifen . withRouter
Die Komponente wird jedes Mal neu gerendert, wenn sich die Route mit denselben Requisiten wie beim <Route>
Rendern ändert props: { match, location, history }
.
Route
sollte Zugang habenthis.props.location
,this.props.history
usw. Ich glaube , Sie nicht verwenden müssenref
mehr mit v4. Versuchen Sie esthis.props.history.push('/template');