Kann jemand den Unterschied zwischen erklären
<Route exact path="/" component={Home} />
und
<Route path="/" component={Home} />
Ich kenne die Bedeutung von "genau" nicht.
Kann jemand den Unterschied zwischen erklären
<Route exact path="/" component={Home} />
und
<Route path="/" component={Home} />
Ich kenne die Bedeutung von "genau" nicht.
Antworten:
In diesem Beispiel eigentlich nichts. Der exact
Parameter kommt ins Spiel, wenn Sie mehrere Pfade mit ähnlichen Namen haben:
Stellen Sie sich zum Beispiel vor, wir hätten eine Users
Komponente, die eine Liste von Benutzern anzeigt. Wir haben auch eine CreateUser
Komponente, mit der Benutzer erstellt werden. Die URL für CreateUsers
sollte unter verschachtelt sein Users
. Unser Setup könnte also ungefähr so aussehen:
<Switch>
<Route path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Wenn wir jetzt zum http://app.com/users
Router gehen, durchläuft das Problem alle definierten Routen und gibt die ERSTE gefundene Übereinstimmung zurück. In diesem Fall würde es also zuerst die Users
Route finden und sie dann zurückgeben. Alles gut.
Aber wenn wir zu http://app.com/users/create
gehen würden, würde es wieder alle unsere definierten Routen durchlaufen und das ERSTE Match zurückgeben, das es findet. React Router führt teilweise Übereinstimmungen durch, stimmt also /users
teilweise überein /users/create
, sodass die Users
Route fälschlicherweise wieder zurückgegeben wird!
Der exact
Parameter deaktiviert die teilweise Übereinstimmung für eine Route und stellt sicher, dass die Route nur zurückgegeben wird, wenn der Pfad genau mit der aktuellen URL übereinstimmt.
In diesem Fall sollten wir exact
unsere Users
Route so ergänzen , dass sie nur auf Folgendes passt /users
:
<Switch>
<Route exact path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Die Dokumente erklären exact
ausführlich und geben andere Beispiele.
exact
sollte meiner Meinung nach die Standardeinstellung sein
/admin//users
in der Admin-Komponente und /admin/users/create
in der Root-Komponente? Ich habe derzeit diese Situation und die typische exact
Lösung funktioniert nicht richtig.
Kurz gesagt, wenn Sie mehrere Routen für das Routing Ihrer App definiert haben, die einer solchen Switch
Komponente beigefügt sind .
<Switch>
<Route exact path="/" component={Home} />
<Route path="/detail" component={Detail} />
<Route exact path="/functions" component={Functions} />
<Route path="/functions/:functionName" component={FunctionDetails} />
</Switch>
Dann müssen Sie exact
der Route ein Schlüsselwort hinzufügen, dessen Pfad auch im Pfad einer anderen Route enthalten ist. Zum Beispiel ist der Home-Pfad /
in allen Pfaden enthalten, sodass ein exact
Schlüsselwort erforderlich ist, um ihn von anderen Pfaden zu unterscheiden, die mit beginnen /
. Der Grund ist auch ähnlich wie /functions
Pfad. Wenn Sie einen anderen Routenpfad wie /functions-detail
oder verwenden möchten, /functions/open-door
der /functions
darin enthalten ist, müssen Sie ihn exact
für die /functions
Route verwenden.
Schauen Sie hier: https://reacttraining.com/react-router/core/api/Route/exact-bool
genau: bool
Wenn true, stimmt dies nur überein, wenn der Pfad location.pathname
genau mit dem übereinstimmt .
**path** **location.pathname** **exact** **matches?**
/one /one/two true no
/one /one/two false yes
Die kürzeste Antwort ist
Bitte versuchen Sie dies.
<switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/shop" component={Shop} />
</switch>
exact
Attributs / der Requisite und ist daher sicherlich keine "Antwort". Sie sollten versuchen, die tatsächlich gestellte Frage zu beantworten, anstatt eine Lösung für ein Problem zu finden, bei dem Sie sich nicht sicher sind, ob OP tatsächlich vorliegt.