1

基本的にナビゲーションバーとナビゲートする2つのコンポーネントであるテストコンポーネントを設定しようとしています。これは、次のようになります。React-routerはアプリケーション内の他のページのコンポーネントを見つけることができません

class Page1 extends Component{ 
    render(){ 
    return (<div>Page1</div>); 
    } 
} 

class Page2 extends Component{ 
    render(){ 
    return (<div>Page222</div>); 
    } 
} 

class App extends Component{ 
    render(){ 
     console.log('children: ', this.props.children); 
    return(
     <div> 
     <NavigationBar/> 

     {this.props.children} 
     </div> 

    ); 
    } 
} 

ReactDOM.render(
    <Router history={browserHistory}> 
    <Route component={App} > 
     <Route path="/" component={App}/> 
     <Route path="page1" component={Page1}/> 
     <Route path="page2" component={Page2}/> 
    </Route> 
</Router>, 
    document.getElementById("app") 
); 

ナビゲーションバーはちょうどよく表示される一般的なブートストラップナビバーです。私がナビゲート(またはページ1またはページ2のボタンをクリックした)ときに私が午前問題がある 、私はメッセージを取得:

は、コンポーネントとルーティングがあるにもかかわらず/ Page1の

を取得することはできませんすべてのセットアップとリンク自体もうまくいくようです。

this.props.childrenもnullであることにも言及する必要があります。

私が間違っていることに関するアイデアはありますか?

+0

おそらく、 'Router'レンダリングブロックの' App'に 'App'を子として渡しているという事実と関係していますか? – gfullam

答えて

2

メインApppath="/"を追加します。また、構成内でAppコンポーネントを2回レンダリングしています。どちらが適切に動作しません。

class Page1 extends Component{ 
    render(){ 
    return (<div>Page1</div>); 
    } 
} 

class Page2 extends Component{ 
    render(){ 
    return (<div>Page222</div>); 
    } 
} 

class Home extends Component { 
    render(){ 
     return(<h1>I AM HOME</h1>); 
    } 
} 

class App extends Component{ 
    render(){ 
    console.log('children: ', this.props.children); 
    return(
     <div> 
     <NavigationBar/> 

     {this.props.children} 
     </div> 
    ); 
    } 
} 

ReactDOM.render(
    <Router history={browserHistory}> 
     <Route path="/" component={App} > 
     <IndexRoute component={Home} /> //Being a different component 
     <Route path="page1" component={Page1}/> 
     <Route path="page2" component={Page2}/> 
     </Route> 
    </Router>, 
    document.getElementById("app") 
); 
+0

私はそれをあなたが提案したものに正確に変更しようとしました。 ルートパス "/"が指定されていないと、ロケーション "/#/"がどのルートとも一致していないと文句を言います。そして、私がそれをインクルードすると、まあ...以前の – theJuls

+1

と同じエラーが表示されます。申し訳ありませんが、私の変更を見て、メインの 'App'ルートにpath ="/"を追加する必要があります。 –

+0

@ZachStoltz答えに^^^を追加すると、それが大きな問題になります。 – gfullam

関連する問題