2016-12-21 3 views
0

Я пытаюсь сделать некоторые основные примеры с react-router, но он просто не работает. Код и идея являются Simples:React router не соответствует ни одному маршруту

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> 
    ); 
    } 
} 

Это делает App компонент, но и любой другой маршрут не работает, как http://localhost:8080/#/about?_k=nwt0sq, что маршрут рукой за мной: Location "/about" did not match any routes.

Repos маршрут (indexRoute) тоже не работает.

Кстати, это index.js:

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

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

Любая идея? Я читал другие вопросы и искал, но не могу решить это.

Вот мои компоненты:

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

Я, возможно, далеко от базы здесь, но. Ваш маршрутизатор использует историю push-состояний (по истории атрибутов = {browserHistory}), но URL, который вы указали в качестве примера, использует хэш-маршрутизацию (/ #/about). Это может работать неправильно. Если вы вручную переходите на свою страницу, попробуйте сделать это без хэша. Также попробуйте не добавлять какие-либо параметры строки запроса либо –

+0

@PaulStoner странно, потому что хэш автоматически устанавливается при открытии пути. Редактировать: я изменил на hashHistory, но проблема все еще там. – Nano

+0

Приношу свои извинения. Я делал этот комментарий на основе аналогичного маршрутизатора, который я настраивал. Добавление хеша к маршруту, когда вы вручную переходите на мою страницу, заставляло браузер не переходить. Я посмотрю, смогу ли я найти что-нибудь еще. –

ответ

2

Я думаю, что я получил свою ошибку, ваш маршрут не срабатывает союзница указать path.you необходимости поставить слэш для каждого пути, как это: -

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

Как я знаю, конечная косая черта не требуется в дочерних маршрутах, btw я попробовал ее и получил ту же ошибку:/ – Nano

+0

базовый маршрут, устанавливающий путь к «/ «Позаботится об этом. В моем ограниченном опыте сами маршруты не требуют ведущих «/» –

+0

В вашем базовом компоненте вы возвращаете реквизиты детей – Codesingh

0

попробовать рефакторинг вашего app.js следующим образом:

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

вам нужно пройти вниз маршруты к вашему основному компонент приложения.