Zunächst müssen Sie dies nicht tun, var r = this;da sich dies if statementauf 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 LinkKomponente oder die RedirectKomponente
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
und dann können Sie in der Komponente, die mit /templateroute 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 withRouterKomponente 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 }.
Routesollte Zugang habenthis.props.location,this.props.historyusw. Ich glaube , Sie nicht verwenden müssenrefmehr mit v4. Versuchen Sie esthis.props.history.push('/template');