0

Wie kann ich eine NotFound-Komponente mit React Router 4 und statische Routen definieren?NotFound Route immer mit statischen Routen angezeigt - [React Router 4]

Ich verwende die next Version von react-router-redux. Also, in meinem Klienten:

export default function appRoutes(history) { 
    return (
    <ConnectedRouter history={history}> 
     <div> 
     {routes.map((route, key) => (
      <Route key={key} {...route} /> 
     ))} 
     </div> 
    </ConnectedRouter> 
); 
} 

und Routen sind:

export const routes = [ 
    { 
    path: '/', 
    component: App 
    }, 
    { 
    path: '/:lang/chat', 
    component: Chat 
    }, 
    { 
    path: '/:lang', 
    component: Listing 
    }, 
    ... 
    { 
    path: '*', 
    component: NotFound, 
    status: 404 
    }, 
]; 

Mit diesem Ansatz wird die Komponente nicht immer gefunden wird, zeigt zusammen mit der angepassten Route.

Ich habe gelesen, dass anstelle der oben beschriebenen appRoutes Methode, mit einem div, muss ich Switch verwenden. Aber mit diesem Ansatz stimmen die Routen nie überein.

EDIT

I angezeigt werden soll, zum Beispiel, App-Komponente und Listing Komponente zugleich aber die NotFound anzeigt auch.

Also, was mache ich falsch?

Antwort

1

Ich fand eine Lösung, die für mich funktioniert. Ich habe von statischen Routen die App Komponente entfernt und vorher platziert und dann Switch verwendet, um nur eine Route zu rendern.

export default function appRoutes(history) { 
    return (
    <ConnectedRouter history={history}> 
     <div> 
     <Route path='/' component={App} /> 
     <Switch> 
      {routes.map((route, key) => (
      <Route key={key} {...route} /> 
     ))} 
     </Switch> 
     </div> 
    </ConnectedRouter> 
); 
} 
1

Reactor Router V4 zeigt alle passenden Routen an. Wenn Sie nur eine einzige Switch-Komponente anzeigen möchten.

+0

Aber was ist, wenn ich die „/“ Route haben, die'App' Komponente anzuzeigen, in dem ich den Header und ich habe dann die Auflistung Komponente „/: lang“, unter der Überschrift? Was Sie sagen, es ist wahr, mit Switch It rendern nur die erste Match-Komponente, die App ist. –

+0

Ich bin mir nicht sicher, worauf Sie sich beziehen, aber wenn ich Sie richtig verstehe, verwenden Sie genaues Attribut. –

+0

Wenn ich 'App' Komponente und' Listing' Komponente rendern möchte, wenn die URL https: // route/en/ist, muss ich exaktes Attribut verwenden? Und was ist mit der Komponente 'notFound'? Es wird nicht angezeigt? Muss ich alle meine definierten statischen Router-Komponenten exakt verwenden? Vielen Dank –