Tout d'abord, vous n'avez pas besoin de le faire var r = this;
car cela if statement
fait référence au contexte du rappel lui-même qui, puisque vous utilisez la fonction flèche, fait référence au contexte du composant React.
Selon les documents:
Les objets d'historique ont généralement les propriétés et méthodes suivantes:
Ainsi, pendant la navigation, vous pouvez passer des accessoires à l'objet historique comme
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
ou de même pour le Link
composant ou le Redirect
composant
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
puis dans le composant qui est rendu avec /template
route, vous pouvez accéder aux accessoires passés comme
this.props.location.state.detail
Gardez également à l'esprit que lorsque vous utilisez des objets d'historique ou de localisation à partir d'accessoires, vous devez connecter le composant withRouter
.
Selon les documents:
withRouter
Vous pouvez accéder aux propriétés de l'objet historique et à la <Route>'s
correspondance la plus proche
via le withRouter
composant d'ordre supérieur. withRouter
rendra son composant à chaque fois que la route change avec les mêmes accessoires que le <Route>
rendu props: { match, location, history }
.
Route
devrait avoir accès àthis.props.location
,this.props.history
etc. Je pense que vous n'avez pas besoin d'utiliserref
plus avec v4. Essayez de fairethis.props.history.push('/template');