Je voudrais afficher un title
dans<AppBar />
qui est en quelque sorte passé de l'itinéraire actuel.
Dans React Router v4, comment pourrait- <AppBar />
on faire passer la route actuelle dans son title
accessoire?
<Router basename='/app'>
<main>
<Menu active={menu} close={this.closeMenu} />
<Overlay active={menu} onClick={this.closeMenu} />
<AppBar handleMenuIcon={this.handleMenuIcon} title='Test' />
<Route path='/customers' component={Customers} />
</main>
</Router>
Y at - il un moyen de passer un titre personnalisé d'une coutume prop
sur <Route />
?
reactjs
react-router
react-router-v4
Raphael Rafatpanah
la source
la source
Réponses:
Dans la version 5.1 de react-router, il existe un hook appelé useLocation , qui renvoie l'objet de localisation actuel. Cela peut être utile chaque fois que vous avez besoin de connaître l'URL actuelle.
la source
redirect
été utilisé. cela lira le chemin avant la redirectionDans React Router 4, la route actuelle est en -
this.props.location.pathname
. Obtenezthis.props
et vérifiez. Si vous ne voyez toujours pas,location.pathname
vous devez utiliser le décorateurwithRouter
.Cela pourrait ressembler à ceci:
la source
window.location.pathname
Si vous utilisez des modèles, réagissent pour où la fin de votre fichier ressemble réagit comme ceci:
export default SomeComponent
vous devez utiliser le composant d'ordre supérieur (souvent désigné comme un « hoc »),withRouter
.Tout d'abord, vous devrez importer
withRouter
comme suit:Ensuite, vous voudrez utiliser
withRouter
. Vous pouvez le faire en modifiant l'exportation de votre composant. Il est probable que vous souhaitiez passer deexport default ComponentName
àexport default withRouter(ComponentName)
.Ensuite, vous pouvez obtenir l'itinéraire (et d'autres informations) à partir des accessoires. Plus précisément,
location
,match
ethistory
. Le code pour cracher le chemin serait:Un bon article avec des informations supplémentaires est disponible ici: https://reacttraining.com/react-router/core/guides/philosophy
la source
Voici une solution utilisant
history
Lire la suiteà l'intérieur du routeur
la source
this.props....
n'est que du bruit à nos oreilles.Il y a un hook appelé useLocation dans react -router v5, pas besoin de HOC ou d'autres choses, c'est très succinct et pratique.
la source
Je pense que l'auteur de React Router (v4) vient d'ajouter cela withRouter HOC pour apaiser certains utilisateurs. Cependant, je pense que la meilleure approche consiste simplement à utiliser un accessoire de rendu et à créer un simple composant PropsRoute qui transmet ces accessoires. Ceci est plus facile à tester car il ne "connecte" pas le composant comme le fait withRouter. Ayez un tas de composants imbriqués enveloppés dans withRouter et ce ne sera pas amusant. Un autre avantage est que vous pouvez également utiliser ce passage à travers les accessoires que vous souhaitez pour la Route. Voici l'exemple simple d'utilisation de render prop. (à peu près l'exemple exact de leur site Web https://reacttraining.com/react-router/web/api/Route/render-func ) (src / components / routes / props-route)
utilisation: (remarquez pour obtenir les paramètres d'itinéraire (match.params), vous pouvez simplement utiliser ce composant et ceux-ci vous seront transmis)
notez également que vous pouvez également passer les accessoires supplémentaires que vous voulez de cette façon
la source
A dit Con Posidielov , l'itinéraire actuel est présent
this.props.location.pathname
.Mais si vous voulez faire correspondre un champ plus spécifique comme une clé (ou un nom), vous pouvez utiliser matchPath pour trouver la référence d'itinéraire d'origine.
la source
Ajouter
Puis changez votre exportation de composants
Ensuite, vous pouvez accéder à l'itinéraire directement dans le composant lui-même (sans rien toucher d'autre dans votre projet) en utilisant:
Testé en mars 2020 avec: "version": "5.1.2"
la source