2016-05-10 61 views
1

我在學習React JavaScript庫。 我想創建一個簡單的網頁應用程序與以下佈局:菜單+子菜單+內容。我使用反應15.0.2,react-router 2.4.0,babel 6.5.2和webpack 1.13.0。react:menu + submenu + content

我能夠創建菜單+內容佈局,但我不知道添加子菜單部分的最佳做法是什麼。

我的應用程序是這樣的:

Home ~ About ~ Contact ~ Profile 

content... 

我想配置文件菜單項下添加一個子菜單,但第3菜單項沒有子菜單。所以如果我點擊About和Contact鏈接,我想看到主菜單欄下的正確內容。如果我點擊配置文件鏈接,那麼需要顯示一個子菜單。點擊子菜單項的內容需要在菜單+子對來顯示:

Home ~ About ~ Contact ~ Profile 

Profile-Submenu 1 ~ Profile-Submenu 2 ~ ... 

content... 

App.js

ReactDom.render(
    <Router> 
     <Route component={MainLayout}> 
      <Route path="/" component={Home} /> 
      <Route path="home" component={Home} /> 
      <Route path="about" component={About} /> 
      <Route path="contact" component={Contact} /> 
      <Route path="profile" component={Profile} /> 
     </Route> 
    </Router>, 
    document.getElementById('root') 
); 

MainLajout.js

export default class MainLayout extends React.Component { 
    render() { 
     return (
      <div> 
       <MainMenu /> 
       <main>{this.props.children}</main> 
      </div> 
     ); 
    } 
} 

MainMenu.js

export default class MainMenu extends React.Component { 
    render() { 
     return (
      <div style={style.container}> 
       <Link to='/'>Home</Link> 
       {'\u00a0'}~{'\u00a0'} 
       <Link to='/about'>About</Link> 
       {'\u00a0'}~{'\u00a0'} 
       <Link to='/contact'>Contact</Link> 
       {'\u00a0'}~{'\u00a0'} 
       <Link to='/profile'>Profile</Link> 
      </div> 
     ); 
    } 
} 

你能指導我嗎到正確的方向?

+0

看看這個:https://www.npmjs.com/包/ react-nav-bar可能是有用的 –

回答

3

你也許可以通過電流路徑作爲道具MainMenu

export default class MainLayout extends React.Component { 
    render() { 
     return (
      <div> 
       <MainMenu path={this.props.location.pathname} /> 
       <main>{this.props.children}</main> 
      </div> 
     ); 
    } 
} 

然後在你的主菜單

export default class MainMenu extends React.Component { 
    render() { 
     let submenu = null; 
     if (/^\/profile/.test(this.props.path)) { 
      submenu = <div style={style.submenu}> 
       <Link to='/profile/submenu-1'>Submenu 1</Link> 
       <Link to='/profile/submenu-2'>Submenu 2</Link> 
      </div> 
     } 
     return (<div> 
      <div style={style.container}> 
       <Link to='/'>Home</Link> 
       {'\u00a0'}~{'\u00a0'} 
       <Link to='/about'>About</Link> 
       {'\u00a0'}~{'\u00a0'} 
       <Link to='/contact'>Contact</Link> 
       {'\u00a0'}~{'\u00a0'} 
       <Link to='/profile'>Profile</Link> 
      </div> 
      {submenu} 
     </div>); 
    } 
} 
+0

謝謝,它的作品像一個魅力。 我只有一個小小的評論:{子菜單}需要在div元素之間:

mainmenu
{submenu}
。 – zappee

+0

哦,是的,我的發帖太快了。我會用那個更新答案 – hampusohlsson