2017-10-04 1 views
0

私は以下のようで反応する構造を持っている:他のコンポーネントがReactJSのレイアウト内でレンダリングされないのはなぜですか?

client.js // routes are defined here and rendered app 

    components // a directory with all header, footer, layout, etc components 
    | 
    \____ Header.js 
    \____ Layout.js 
    \____ Nav.js 
    \____ Setting.js 

    index.html 

今私が持っているLayout.jsの内部:

import React from 'react'; 
import Footer from './Footer'; 
import Nav from './Nav'; 
import { Link, NavLink } from "react-router-dom"; 

export default class Layout extends React.Component { 
    constructor() { 
     super(); 
    } 
render() { 
    return (
    <div style={{textAlign: 'center'}}> 
     <Nav /> 
     <div className="container" style={{marginTop: '60px'}}> 
       {this.props.children} 
     </div> 
     <Footer /> 
     </div> 
    ); 
    } 
} 

client.jsは以下の通りです:

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import Archive from './components/Archive.js'; 
import Layout from './components/Layout.js'; 
import Featured from './components/Featured.js'; 
import Setting from './components/Setting.js'; 
import { HashRouter, Route, Link } from 'react-router-dom'; 


ReactDOM.render(
     (<HashRouter> 
       <div> 
         <Route path="/" component={Layout} /> 
         <Route path="/archive/:aid?" component={Archive} /> 
         <Route path="/featured" component={Featured} /> 
         <Route path="/setting" component={Setting} /> 
       </div> 
     </HashRouter>), 
document.getElementById('app')); 

問題がときということです私はリンクをナビゲートして、の後の内容をレンダリングします。Footer

enter image description here

NB:I'm in archive pageはフッターセクションの後にレンダリングされ、ここで何が問題である

?レイアウトの中にコンポーネントをレンダリングするにはどうすればよいですか?

+0

削除スタイルは= {{marginTopは: '60PX'}}コンテナでは、ページのコンテンツが上がるだろう。 –

答えて

3

以下のようなものを試してみて、

<Layout> 
    <Route path="/archive/:aid?" component={Archive} /> 
    <Route path="/featured" component={Featured} /> 
    <Route path="/setting" component={Setting} /> 
</Layout> 
+0

'margin-top'は' navbar'を除くページ全体をnavの60px以下にシフトします。私の問題は、「フッター」が「アーカイブのようなコンポーネントコンテンツ」の前にあることです。私はコンポーネントをレイアウト内にレンダリングしたい。 – ALH

+0

OKです。 のように、レイアウト内にすべてのページを配置できます。//あなたのページのルートはです。 –

+0

私は 'Route component>とを同じルートで使用しないでください。 <経路の子供>は無視されます。 " – ALH

関連する問題