2016-12-21 9 views
0

Ich versuche, einige grundlegende Beispiele mit react-router zu machen, aber es funktioniert einfach nicht. Der Code und die Idee sind simples:React Router hat keine Route

import React, { Component } from 'react'; 
import { Router, Route, browserHistory, IndexRoute } from 'react-router'; 
import App from './App'; 
import About from './About'; 
import Repos from './Repos'; 
// import NotMatch from './NotMatch'; 

export default class RouterApp extends Router { 
    render() { 
    return (
     <Router history={ browserHistory }> 
     <Route path='/' component={ App } > 
      <IndexRoute component={ Repos } /> 
      <Route path='about' component={ About } /> 
     </Route> 
     </Router> 
    ); 
    } 
} 

Es die App Komponente macht, aber jede andere Route nicht funktioniert, wie http://localhost:8080/#/about?_k=nwt0sq, dass Route Wurf mich: Location "/about" did not match any routes.

Die Route Repos (indexRoute) funktioniert auch nicht.

BTW, ist dies die index.js:

import React from 'react' 
import { render } from 'react-dom' 
import RouterApp from './modules/Router' 

render(<RouterApp/>, document.getElementById('app')) 

Jede Idee? Ich las noch ein paar Fragen und googelte herum, konnte das aber nicht lösen.

Hier sind meine Komponenten:

App.js

import React, { Component } from 'react'; 

export default class App extends Component { 
    render() { 
     return <h1> APP </h1>; 
    } 
} 

Repos.js

import React, { Component } from 'react'; 

export default class Repos extends Component { 
    render() { 
     return (
      <section> 
       <h2>Repos</h2> 
       <ul> 
        <li>Repo 1</li> 
        <li>Repo 2</li> 
        <li>Repo 3</li> 
        <li>Repo 4</li> 
       </ul> 
      </section> 
     ); 
    } 
} 

About.js

import React, { Component } from 'react'; 

export default class About extends Component { 
    render() { 
     return (
      <section> 
       <h2>About</h2> 
       <p> 
        Pariatur eum tenetur in iste maiores est architecto dignissimos. 
        Vero non explicabo veniam quam debitis. 
        Deleniti rerum eaque ratione provident delectus architecto veniam. 
        Ipsum omnis dicta eum dolore ea. 
       </p> 
      </section> 
     ); 
    } 
} 
+0

Ich bin hier vielleicht weg von der Basis, aber. Ihr Router verwendet den Push-Status-Verlauf (nach dem Attribut history = {browserHistory}), aber die URL, die Sie als Beispiel aufgelistet haben, verwendet ein Hash-basiertes Routing (/ #/about). Das funktioniert möglicherweise nicht richtig. Wenn Sie manuell zu Ihrer About-Seite navigieren, versuchen Sie es ohne den Hash. Versuchen Sie auch, keine Abfragezeichenfolgeparameter –

+0

@PaulStoner seltsam hinzuzufügen, da der Hash automatisch festgelegt wird, wenn ich den Pfad öffne. Edit: Ich wechselte zu HashHistory, aber das Problem ist immer noch da. – Nano

+0

Entschuldigung, dann. Ich machte diesen Kommentar basierend auf einem ähnlich aussehenden Router, den ich eingerichtet habe. Das Hinzufügen des Hashs zur Route führte beim manuellen Navigieren zu meiner About-Seite dazu, dass der Browser nicht wechselte. Ich werde nachsehen, ob ich noch etwas finden kann –

Antwort

2

Ich glaube, ich Ihren Fehler bekam, Deine Route ist nicht aktiv angeben Verbündete eine path.you Notwendigkeit slash für jeden Pfad so: -

render() { 
    return (
     <Router history={ browserHistory }> 
     <Route path='/' component={ App } > 
      <IndexRoute component={ Repos } /> 
      <Route path='/about' component={ About } /> 
     </Route> 
     </Router> 
    ); 
    } 
+0

Wie ich weiß, ist der abschließende Schrägstrich in den untergeordneten Routen nicht erforderlich, zwischendurch habe ich es versucht und den gleichen Fehler erhalten:/ – Nano

+0

die Basisroute, die den Pfad zu "/ "Kümmert sich darum. In meiner begrenzten Erfahrung die Routen selbst nicht erfordern die führenden "/" –

+0

In Ihrer Basiskomponente sind Sie zurück Kindern Requisiten – Codesingh

0

bereiten app.js Refactoring wie folgt:

export default class App extends Component { 
    render() { 
     return (<div> (this.props.children} </div>): 
    } 
} 

Sie die Routen zu Ihrem Haupt zu überliefern müssen App-Komponente.

Verwandte Themen