Tout d'abord, vous n'avez pas besoin de faire var r = this;
comme ceci dans if statement
fait référence au contexte de la fonction de rappel elle-même qui, puisque vous utilisez la fonction flèche, fait référence au contexte du composant React.
Selon les documents :
Les objets historiques possèdent généralement les propriétés et méthodes suivantes :
Ainsi, tout en naviguant, vous pouvez passer des props à l'objet historique comme suit
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
ou de la même manière pour le Link
ou le Redirect
composant
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
et ensuite dans le composant qui est rendu avec /template
vous pouvez accéder aux props passés de la manière suivante
this.props.location.state.detail
Gardez également à l'esprit que, lorsque vous utilisez des objets d'historique ou de localisation à partir de props, vous devez connecter le composant avec withRouter
.
Selon les Docs :
avecRouter
Vous pouvez accéder aux propriétés de l'objet historique et à la plus proche <Route>'s
par le biais de la withRouter
composante d'ordre supérieur. withRouter
rendra à nouveau son composant à chaque fois que la route changera avec les mêmes props que <Route>
Rendu props: { match, location, history }
.
0 votes
Le composant qui est rendu par un
Route
devrait avoir accès àthis.props.location
,this.props.history
etc. Je pense que vous n'avez pas besoin d'utiliserref
plus avec la v4. Essayez de fairethis.props.history.push('/template');
0 votes
Ce n'est pas un ref ,c'est une variable qui pointe vers ceci ; this.props.history.push('/template') ; me conduit à la page suivante mais je veux passer les props avec eux .ref = this ;
0 votes
Vous essayez de passer
props
au composant qui correspond à la route ? Je pense ce fil de discussion GitHub répond à votre préoccupation.2 votes
JFYI - J'ai supprimé <a href> et ajouté <Link> qui a également l'option d'envoyer l'état, qui peut être consulté par la page suivante via, this.props.location.state.
4 votes
Pourriez-vous s'il vous plaît marquer l'une des réponses comme "réponse". Je suis sûr que les personnes qui passent du temps à les taper apprécieront.