2017-07-05 3 views
0

App.jsreagieren Router 4 - Nested-Switch nicht als

<ConnectedRouter history={history}> 
    <Switch> 
     <Route path="/dashboard" name="Layout" component={Layout} /> 
     <Route exact path="/login" name="Login" component={Login} /> 
     <Redirect from="/" to="/dashboard" /> 
     <Route component={NoMatch}/> 
    </Switch> 
</ConnectedRouter> 

Layout.js

<Switch> 
    <Route path="/" name="Dashboard" component={Dashboard} /> 
    <Route path="/components/a" component={ComponentA} /> 
    <Route path="/components/b" component={ComponentB} /> 
</Switch> 
  • Probleme erwartet funktionieren:
    • Problem # 1 navigate zu "/dashboard/components/a 'oder'/dashboard/components/b 'zeigt die Komponente a oder b nicht wie erwartet an
    • Problem # 2 zu falschem Weg navigieren immer zu '/ Dashboard' umleiten nicht NoMatch Komponente

UPDATE anzuzeigen: Redirect Wechsel zu <Route exact path='/' render={() => <Redirect to='/dashboard' />} /> kann das Problem # 2 beheben, aber Problem # 1 bleibt

+0

versuchen zu navigieren sind tyring mit '' nach '' –

+0

Versuchen Sie, 'exact' auf Ihre Routen zu setzen? – Winter

Antwort

0

Sie müssen möglicherweise Ihre Route Pfad zu haben sowie ein /dashboard param, wenn Sie /dashboard/componenets/a oder /dashboard/componenets/b

<Switch> 
    <Route exact path="/dashboard" name="Dashboard" component={Dashboard} /> 
    <Route path="/dashboard/components/a" component={ComponentA} /> 
    <Route path="/dashboard/components/b" component={ComponentB} /> 
</Switch> 
+0

das funktioniert nicht. Das Problem liegt möglicherweise an 'exact' in' } /> ' aber wenn ich' exact' entferne, dann zeigt leere Seite an ??? – user3765825

+0

Was ist, wenn Sie einfach mit der obigen Konfiguration verwenden –

+0

Ich habe das versucht, aber es ist nutzlos – user3765825