2015-11-14 16 views
5

Używamy react-router tak:React router nie renderowania komponentu

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

Po tym react-router, co kiedyś było tylko localhost:8000 zaczął wyglądać jak localhost:8000/#/?_k=wulhmi. Nie wiem skąd pochodzą te dodatkowe parametry.

W każdym razie podczas próby uzyskania dostępu do strony localhost:8000/#/p/XYZ strona wraca do numeru /. Każda pomoc byłaby bardzo cenna.

+0

[_ "Co to jest? _k = śmieci z cukru w ​​adresie URL?" _] (Https://github.com/rackt/react-router/blob/master/docs/guides/basics/Histories.md# what-is-that-_kckuvup-junk-in-the-url) – robertklep

+0

jak wyglądają "AnyPic' i' PhotoView'? Czy są jakieś błędy w konsoli? – max

+0

@max zaktualizowano, aby uwzględnić inne komponenty – Carpetfizz

Odpowiedz

7

Powodem tego jest fakt, że nie renderujesz ścieżek (y) dzieci. Sprawdź the react router docs.

Jeśli dodać this.props.children do AnyPic składnika wszystko będzie działać:

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

Jak @robertklep podkreślono w komentarzu, „ekstra” rzeczą w adresie URL jest dodawana jako router wykorzystuje Hash Historia przez domyślnie, prawdopodobnie chcesz użyć BrowserHistory, aby to zrobić, musisz zainstalować history module: npm install history Zobacz dokumenty here.

Powiązane problemy