Tout d'abord, vous n'avez pas besoin de le faire var r = this;car cela if statementfait 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 Linkcomposant ou le Redirectcomposant
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
puis dans le composant qui est rendu avec /templateroute, 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>'scorrespondance la plus proche
via le withRoutercomposant 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 }.
Routedevrait avoir accès àthis.props.location,this.props.historyetc. Je pense que vous n'avez pas besoin d'utiliserrefplus avec v4. Essayez de fairethis.props.history.push('/template');