2017-10-19 31 views
0

J'ai rencontré un problème avec le composant React Router v4 Switch. Je suis assez surpris que je ne pouvais pas trouver un fil pertinent pour ce problème. Un commutateur regardera commun comme ceci:Réagissez le routeur v4 pour empêcher les routes enfants correspondantes

<Switch> 
    <Route path='/path1' component={Path1Component}/> 
    <Route path='/path2' component={Path2Component}/> 
    <Route exact path='/' component={Home}/> 
    <Route component={NotFound}/> 
</Switch> 

Cela signifie que lorsque je suis sur un chemin: «/» i get un composant d'accueil, sur «/chemin1 » je reçois un Path1Component et sur le chemin «/foobar 'J'obtiens un composant NotFound. Et c'est parfaitement bien

Cependant, quand je suis sur la route '/ path1/foobar', j'ai aussi le Path1Component. Ce comportement n'est pas correct dans tous les cas - cette fois, je ne veux pas d'itinéraires imbriqués pour l'itinéraire '/ path1'. '/ path1/foobar' devrait obtenir un composant NotFound, n'importe quelle chaîne, avec '/' ou sans après '/ path1' devrait retourner le composant NotFound.

Quelle serait la résolution préférée à ce problème? Je pourrais juste ajouter exactement à chaque chemin, mais cela ne serait-il pas en train de surcharger le code? Je pense que cela devrait être le défaut, mais ce n'est pas le cas. Même sur les documents React Router v4, comme here. Je vois ce problème - ici '/ will-match/foo' va également correspondre. Quelles sont vos pensées?

Répondre

0

Il y a une discussion here, mais pour le rendre court: il casserait le code existant. Si cela devait changer, vous auriez à faire exact={false} si vous voulez faire correspondre les routes enfant sans faire 'path1/child1'.