2017-05-31 4 views
0

Version 4 von React RouterReagieren Router Unter Route

einer anderen Mutter Route nennt Ich habe eine Unter Route Setup: /profile/agree und auf dieser Unter Route mag ich einen <Link> Tag /team gehen.

Es ist Setup jetzt so die übergeordnete Seite hat:

<Router> 
    <Switch> 
    <Route exact path="/" component={Home} /> 
    <Route path="/profile" component={Profile} /> 
    <Route path="/team" component={Team} /> 
    </Switch> 
</Router> 

Und die Profilkomponente hat ein eigenes Routing ist:

<Router> 
    <Switch> 
    <Route exact path="/profile" component={General} /> 
    <Route path="/profile/hotel" component={Hotel} /> 
    <Route path="/profile/release" component={Release} /> 
    </Switch> 
</Router> 

Ob das richtig ist oder nicht, ich bin nicht sicher, da Keines der Dokumente scheint diese Art von Szenario zu erklären, aber es ergab für mich Sinn. Wie dem auch sei, wenn die „Release“ Komponente einen einfachen Link hat, es scheint nicht richtig zu navigieren und zeigt nur eine leere Seite:

<a href="/team">Somehow</a> {/* << This works but refreshes the whole page */} 
<Link to="/team">Of Course</Link> {/* << This just shows empty profile page /*} 

Ich dachte, vielleicht die Sub-Router nur so hoch wie selbst nachschauen können, also vielleicht:

<Link to="../team">Of Course</Link> 

Aber das tat das Gleiche. Es scheint auf der "Profil" Hauptroute zu bleiben. Wie navigiert man zu einer anderen übergeordneten Route?

+0

Haben Sie das in der Dokumentation gesehen? https://reacttraining.com/reac-router/web/example/route-config – taylorc93

+0

Ja @ taylorc93 aber es scheint ein bisschen verwirrend. Die Idee, dass Sie eine Art "Route mit Subrouten" -Komponente erstellen müssten, scheint merkwürdig. Ich werde versuchen zu schreiben, was sie haben und näher zu verstehen, was/warum die tun es so. Beispiel: Warum haben sie eine JSON-Definition der Routen statt nur Verschachtelungselemente? Ich wollte auch, dass jede Route mit ihrem eigenen Routing (nicht einem Besserwisser) zurechtkommt ... ist das eine seltsame Sache? Ich denke ähnlich Router-Muster von ExpressJS. Für jede Route ist es egal, was die Wurzel ist, sie fügen einfach mehr hinzu, wo immer sie sind. – Chris

Antwort

0

Also habe ich schließlich den einfachen Fehler herausgefunden, den ich hatte. Die Tatsache, dass Profil <Router> drin hatte!

tun dies Profil gearbeitet (einfach entfernt Router-Tag):

<Switch> 
    <Route exact path="/profile" component={General} /> 
    <Route path="/profile/hotel" component={Hotel} /> 
    <Route path="/profile/release" component={Release} /> 
</Switch> 

Das gibt mir, was ich denke, am meisten Sinn macht. Jede "Szene" ist für ihr eigenes Routing verantwortlich. Der einzige Nachteil ist, dass es immer noch /profile benötigt, obwohl ich wahrscheinlich schlau werden könnte und die "root" als Eigenschaft an die Szenen senden könnte.