J'utilise le même composant pour trois itinéraires différents:
<Router>
<Route path="/home" component={Home} />
<Route path="/users" component={Home} />
<Route path="/widgets" component={Home} />
</Router>
Y a-t-il de toute façon le combiner, pour être comme:
<Router>
<Route path=["/home", "/users", "/widgets"] component={Home} />
</Router>
javascript
reactjs
path
react-router
url-routing
Chetan Garg
la source
la source
Réponses:
Depuis react -router v4.4.0-beta.4 , et officiellement dans v5.0.0, vous pouvez maintenant spécifier un tableau de chemins qui se résolvent en un composant, par exemple
Chaque chemin du tableau est une chaîne d'expression régulière.
La documentation de cette approche peut être trouvée ici .
la source
exact
attribut pour un seul chemin?yarn upgrade
de 4.3 à 4.4. Est-il officiellement publié?Au moins avec react-router v4, il
path
peut s'agir d'une chaîne d'expression régulière, vous pouvez donc faire quelque chose comme ceci:Comme vous pouvez le voir, c'est un peu verbeux, donc si votre
component
/route
est simple comme ça, cela n'en vaut probablement pas la peine.Et bien sûr, si cela se produit souvent, vous pouvez toujours créer un composant d' encapsulation qui prend un
paths
paramètre de tableau , ce qui fait le regex ou la.map
logique de manière réutilisable.la source
/^\/(home|users|widgets)/
maintenant,/widgets
correspondra, mais/dashboard/widgets
ne correspondra pas.Warning: Failed prop type: Invalid prop
chemin` du typeregexp
fourni àRoute
, attendustring
.`<Route path="/(new|edit)/user/:id?" ... />
path={`/(${ROUTES.HOME}|${ROUTES.HOME_1})/`}
Je ne pense pas que ce soit le cas si vous utilisez une version de React Router inférieure à la v4.
Vous pouvez utiliser a
map
comme vous le feriez avec n'importe quel autre composant JSX:ÉDITER
Vous pouvez également utiliser une expression régulière pour le chemin dans react-router v4 tant qu'il est pris en charge par path-to-regexp . Voir la réponse de @ Cameron pour plus d'informations.
la source
key
accessoire.À partir de react-route-dom v5.1.2, vous pouvez passer plusieurs chemins comme ci-dessous
Et évidemment, vous devez importer le fichier jsx Home en haut.
la source
Autre option: utilisez le préfixe d'itinéraire.
/pages
par exemple. Tu auras/pages/home
/pages/users
/pages/widgets
Et puis résolvez-le de manière détaillée à l'intérieur du
Home
composant.la source
Selon la documentation de React Router, le proptype 'path' est de type string. Il n'y a donc aucun moyen de passer un tableau en tant qu'accessoires au composant Route.
Si votre intention est de changer uniquement d'itinéraire, vous pouvez utiliser le même composant pour différents itinéraires sans aucun problème
la source
À partir de react-router v4.4, vous pouvez simplement faire quelque chose comme ceci ci-dessous.
stockez le chemin dans une variable et passez-le ci-dessous et utilisez '|' Opérateur.
donc pour tous les chemins
component={Home}
auxquels il correspond, il rendra ce dont vous avez besoinla source