2017-10-04 68 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')); 

的問題是,當我通過鏈接導航,它呈現archive之後的內容Footer

enter image description here

NB:I'm in archive page是頁腳部分後呈現

這裏有什麼問題?我該怎麼做才能在佈局中渲染組件?

+0

刪除風格= {{marginTop: '60像素'}}在容器那麼頁面內容就上去了。 –

回答

3

嘗試類似下面,

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

'margin-top'將除navbar外的整個頁面移動到導航下60px的位置。我的問題是'Footer'在'Component archive like archive'之前。我希望組件在佈局內呈現。 – ALH

+0

行了。您可以將所有頁面放在Layout中,如 //您的頁面在此處生成。 –

+0

我有'你不應該使用<路由組件>和<路由的孩子>在相同的路線的錯誤; <路線兒童>將被忽略' – ALH