Alors, j'ai quelques itinéraires mis en place de cette façon:-routeur React routes imbriquées v4 et navigation programmatique
index.js
<Route exact path={pathDefault} component={Home}>
<Route path={path1} component={component1}/>
<Route path={path2} component={component2}/>
</Route>
component1.js
<Route exact path={`${props.match.url}`} component={Summary}/>
<Route path={`${props.match.url}`/someOtherPath1} component={SubComponent1}/>
<Route path={`${props.match.url}`/someOtherPath2} component={SubComponent2}/>
COMPONENT2 .js est mis en place de manière similaire.
L'idée ici est que j'ai plusieurs routes de niveau supérieur, qui ont des pages par défaut. Mais, alors sous-routes qui peuvent être commutées entre. Cela fonctionne bien, jusqu'à ce que, à l'un des sous-niveaux comme component1/someOtherPath2
je peux basculer entre someOtherPath1
et someOtherPath2
, mais si je tente alors de changer l'un des itinéraires de niveau supérieur en utilisant history.push(path2)
, au lieu de revenir à un composant de haut niveau (c'est-à-dire le composant par défaut de path1), il finit par pousser une route composée, et donc incorrecte, comme component1/component2
. Alors, comment changeriez-vous une route de niveau supérieur dans un composant de niveau inférieur par programmation (de préférence en utilisant history.push
ou similaire)?
Vous pouvez utiliser 'history.push' aussi longtemps que vous importez de l'histoire chaque fois que vous injectez dans votre réaction routeur. Une fois que vous l'avez importé dans votre composant, vous pouvez simplement utiliser 'history.push' comme d'habitude. Faites-moi savoir si vous êtes coincé et je vais créer un bac à sable pour vous. – Win
Que voulez-vous dire par l'importer quand je l'injecte? Vous voulez dire quelque chose comme la configuration de '? –
Araymer
Je devrais mentionner, j'utilise 'withRouter' sur les composants pour obtenir l'histoire sur les accessoires. – Araymer