Ich verwende dieselbe Komponente für drei verschiedene Routen:
<Router>
<Route path="/home" component={Home} />
<Route path="/users" component={Home} />
<Route path="/widgets" component={Home} />
</Router>
Gibt es sowieso zu kombinieren, um zu sein wie:
<Router>
<Route path=["/home", "/users", "/widgets"] component={Home} />
</Router>
javascript
reactjs
path
react-router
url-routing
Chetan Garg
quelle
quelle
Antworten:
Ab React -Router v4.4.0-beta.4 und offiziell in v5.0.0 können Sie jetzt ein Array von Pfaden angeben, die in eine Komponente aufgelöst werden, z
Jeder Pfad im Array ist eine Zeichenfolge mit regulären Ausdrücken.
Die Dokumentation zu diesem Ansatz finden Sie hier .
quelle
exact
Attribut für einen einzelnen Pfad fest?yarn upgrade
von 4.3 bis 4.4. Ist es offiziell freigegeben?Zumindest mit React-Router v4
path
kann dies eine Zeichenfolge mit regulären Ausdrücken sein, sodass Sie Folgendes tun können:Wie Sie sehen können, ist es ein bisschen ausführlich. Wenn Ihr
component
/route
so einfach ist, ist es das wahrscheinlich nicht wert.Und wenn dies tatsächlich häufig vorkommt, können Sie natürlich immer eine Wrapping-Komponente erstellen, die einen Array-
paths
Parameter enthält, der den.map
regulären Ausdruck oder die Logik wiederverwendbar macht.quelle
/^\/(home|users|widgets)/
Jetzt/widgets
wird übereinstimmen, aber/dashboard/widgets
nicht übereinstimmen.Warning: Failed prop type: Invalid prop
Pfad "des Typs, derregexp
geliefert wirdRoute
, erwartet.string
"<Route path="/(new|edit)/user/:id?" ... />
path={`/(${ROUTES.HOME}|${ROUTES.HOME_1})/`}
Ich glaube nicht, dass es so ist, wenn Sie eine Version von React Router verwenden, die niedriger als v4 ist.
Sie können a jedoch
map
wie jede andere JSX-Komponente verwenden:BEARBEITEN
Sie können auch einen regulären Ausdruck für den Pfad in React-Router v4 verwenden, sofern dieser vom Pfad zum regulären Ausdruck unterstützt wird . Weitere Informationen finden Sie in der Antwort von @ Cameron.
quelle
key
Requisite nicht.Andere Option: Verwenden Sie das Routenpräfix.
/pages
beispielsweise. Sie erhalten/pages/home
/pages/users
/pages/widgets
Und dann lösen Sie es detailliert innerhalb der
Home
Komponente.quelle
Ab React-Route-Dom v5.1.2 können Sie mehrere Pfade wie folgt übergeben
Und natürlich müssen Sie die Home-JSX-Datei oben importieren.
quelle
Gemäß den React Router-Dokumenten ist der Proptyp 'Pfad' vom Typ Zeichenfolge. Es gibt also keine Möglichkeit, ein Array als Requisiten an die Routenkomponente zu übergeben.
Wenn Sie nur die Route ändern möchten, können Sie dieselbe Komponente für unterschiedliche Routen verwenden, ohne dass dies Probleme verursacht
quelle
Ab React-Router v4.4 können Sie so etwas wie folgt tun.
Speichern Sie den Pfad in einer Variablen und übergeben Sie ihn unten und verwenden Sie '|' Operator.
Für alle Pfade, mit denen es übereinstimmt, wird es gerendert,
component={Home}
was Ihr Bedarf ist.quelle