Reagieren-Router: Holen Sie sich alle Routen als array
Gibt es eine Bibliothek, die meiner route-Instanz in ein array von Pfaden?
Beispiel:
<Route path="/" component={App}>
<Route path="author" component={Author}>
<Route path="about" component={About}/>
</Route>
<Route path="users" component={Users} />
</Route>
Ausgabe
['/', '/author', '/author/about', '/users']
Ich könnte schreiben, eine Funktion reduzieren, haben sich ein paar Zeilen code und lösen, aber ich Frage mich, ob es eine bestehende Bibliothek, die machen das für mich und kümmern sich um die verschiedenen Möglichkeiten, representating Strecken reagieren router.
- was ist der Anwendungsfall?
- Ich möchte ein plugin für webpack für statische site-generation. Kurz gesagt, ich veröffentlichen will meine app im github.io und ich bin mit router reagieren. Finden Sie dieses Projekt: github.com/markdalgleish/static-site-generator-webpack-plugin. Sie erwarten, dass ein array von Routen, deren Eintragung.
- hier ist eine, die erzeugt XML-sitemap - reagieren-router-sitemap, aber ich denke, Sie sind besser dran mit einem einfachen reduzieren (wie Sie sagten), bis Sie mehr komplexe Routen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ich nichts gefunden, ich landete eine Bibliothek für das...
https://github.com/alansouzati/react-router-to-array
Ich verstehe nicht, warum Sie eine Bibliothek. Ihre
Routes
verfügbar sein sollten alsArray
in die Requisiten.Beispiel:
Ich kürzlich eine Bibliothek, die speziell für diesen Zweck: https://github.com/elliottsj/react-router-query
Es kann mit asynchronen Routen (d.h.
getChildRoutes
/getIndexRoute
), und bietet nicht nur ein array von Pfaden, aber eine Reihe von "FlatRoute" Objekte, die den Pfad enthalten (fullPath
), plus alle der ursprünglichen Eigenschaften der einzelnen route, und eine Reihe von "Eltern" - Routen:Beachten Sie, dass nur die "leaf" - Strecken sind enthalten in dem Ergebnis: es gibt keine "FlatRoute" Objekt für
fullPath: '/'
nochfullPath: '/author'
. Dies ist zu verhindern, einschließlich Routen, die sind nur als layout für die Kind-Routen, z.B.Wenn Sie möchten, eine FlatRoute für
/posts
einfach einIndexRoute
: