2015-11-14 5 views
5

Мы используем react-router так:Реагировать маршрутизатор не делает компонент

ReactDOM.render(
    <Router> 
     <Route path="/" component={AnyPic}> 
      <Route path="p/:photoId" component={PhotoView} /> 
     </Route> 
    </Router>, 
    document.getElementsByClassName("container")[0] 
); 

var AnyPic = React.createClass({ 
    render: function() { 
     return (
      <p>Hello world</p> 
     ) 
    } 
}); 

var PhotoView = React.createClass({ 
    render: function(){ 
     return (
      <p>This is the photo view</p> 
     ) 
    } 
}); 

После включения react-router, что раньше было просто localhost:8000 начал смотреть, как localhost:8000/#/?_k=wulhmi. Не знаю, откуда взялись эти дополнительные параметры.

Во всяком случае, при попытке доступа localhost:8000/#/p/XYZ страница продолжает возвращаться к /. Любая помощь приветствуется.

+0

[_ "Что это? _k = ckuvup нежелательный URL-адрес?" _] (Https://github.com/rackt/react-router/blob/master/docs/guides/basics/Histories.md# what-is-that-_kckuvup-junk-in-the-url) – robertklep

+0

Как выглядят 'AnyPic' и' PhotoView'? Есть ли ошибки в консоли? – max

+0

@max обновлен, чтобы включить другие компоненты – Carpetfizz

ответ

7

Причина этого в том, что вы не предоставляете своим детям маршруты (маршруты). Выезд the react router docs.

Если добавить this.props.children к вашему AnyPic компонент все будет работать:

var AnyPic = React.createClass({ 
    render: function() { 
     return (
      <div> 
       <p>Hello world</p> 
       {this.props.children} 
      </div> 
     ) 
    } 
}); 

Как @robertklep отметил в комментарии, «лишние» вещи в URL добавляется как маршрутизатор использует Hash История по по умолчанию, вы, вероятно, захотите использовать BrowserHistory, чтобы сделать это, что вам нужно установить history module: npm install history См. документы here.

Смежные вопросы