Quelqu'un peut-il expliquer la différence entre
<Route exact path="/" component={Home} />
et
<Route path="/" component={Home} />
Je ne connais pas le sens de 'exact'
Quelqu'un peut-il expliquer la différence entre
<Route exact path="/" component={Home} />
et
<Route path="/" component={Home} />
Je ne connais pas le sens de 'exact'
Réponses:
Dans cet exemple, rien de vraiment. Le
exact
paramètre entre en jeu lorsque vous avez plusieurs chemins qui ont des noms similaires:Par exemple, imaginons que nous ayons un
Users
composant qui affiche une liste d'utilisateurs. Nous avons également unCreateUser
composant utilisé pour créer des utilisateurs. L'URL deCreateUsers
doit être imbriquée sousUsers
. Notre configuration pourrait donc ressembler à ceci:Maintenant, le problème ici, lorsque nous allons au
http://app.com/users
routeur, passera par toutes nos routes définies et retournera la PREMIÈRE correspondance qu'il trouve. Donc, dans ce cas, il trouverait d'abord l'Users
itinéraire, puis le renverrait. Tout bon.Mais, si nous y allions
http://app.com/users/create
, il passerait à nouveau par toutes nos routes définies et retournerait la PREMIÈRE correspondance qu'il trouve. Le routeur React effectue une correspondance partielle, donc une correspondance/users
partielle/users/create
, de sorte qu'il renvoieUsers
à nouveau incorrectement la route!Le
exact
paramètre désactive la correspondance partielle pour une route et s'assure qu'elle ne renvoie la route que si le chemin correspond exactement à l'URL actuelle.Donc, dans ce cas, nous devrions ajouter
exact
à notreUsers
route pour qu'elle ne corresponde que sur/users
:Les documents expliquent
exact
en détail et donnent d'autres exemples.la source
exact
devrait être la valeur par défaut à mon avis/admin//users
dans le composant Admin, et/admin/users/create
dans le composant Root ??? Je suis actuellement dans cette situation et laexact
solution typique ne fonctionne pas correctement.En bref, si vous avez plusieurs itinéraires définis pour le routage de votre application, inclus avec un
Switch
composant comme celui-ci;Ensuite, vous devez mettre le
exact
mot-clé de la Route dont le chemin est également inclus par le chemin d'une autre Route. Par exemple, le chemin d'accueil/
est inclus dans tous les chemins, il doit donc avoir unexact
mot - clé pour le différencier des autres chemins commençant par/
. La raison est également similaire au/functions
chemin. Si vous souhaitez utiliser un autre chemin de route comme/functions-detail
ou/functions/open-door
qui comprend,/functions
vous devez l'utiliserexact
pour la/functions
route.la source
Jetez un œil ici: https://reacttraining.com/react-router/core/api/Route/exact-bool
exact: booléen
Lorsque true, ne correspondra que si le chemin correspond
location.pathname
exactement au.la source
La réponse la plus courte est
Veuillez essayer ceci.
la source
exact
attribut / accessoire, et n'est donc certainement pas une "réponse". Vous devriez essayer de répondre à la question qui vous est réellement posée plutôt que de donner une solution à un problème dont vous n'êtes pas sûr qu'OP ait réellement.