2016-12-08 11 views
0

特定のブレークポイントに表示されるモバイルナビゲーションバーがあります。ボタンMENUをクリックすると、メニューが表示され、ボタンがCLOSEに変わります。次にCLOSEをクリックするとメニューが閉じられ、ボタンはMENUに戻ります。しかし、私がナビゲーションルートをクリックすると、メニューは開いたままになります。ナビゲーションボタンがクリックされたときにメニューを閉じるにはここに条件を追加するにはどうすればよいですか?リアクションクリック後にモバイルナビゲーションが崩壊しない

var MobileMenu = React.createClass({ 
    getDefaultProps: function(){ 
    return { 
     isOpen: false 
    }; 
    }, 
    openForm: function(){ 
     window.open('http://localhost:8080.com/form', '_blank', 'location=yes,height=570,width=520,scrollbars=yes,status=yes') 
    }, 
    render: function(){ 
    if (this.props.isOpen){ 
    return (
     <div className="navMenuButtons"> 
      <NavLink to="/" className="navMenuButton">HOME</NavLink> 
      <NavLink to="/about" className="navMenuButton">ABOUT</NavLink> 
      <NavLink to="/faq" className="navMenuButton">FAQ</NavLink> 
      <div className="margin-auto"> 
      <NavLink className="navButton applyButton" onClick={this.openForm}> 
      APPLY 
      </NavLink> 
      </div> 
     </div> 
    ) 
    } 
    return null; 
    } 
}); 

var NavBar = React.createClass({ 
    getInitialState: function() 
     { 
      return { 
       isOpen: false 
      }; 
     }, 
     toggleMenu: function(){ 
     this.setState({isOpen: !this.state.isOpen}); 
    }, 
     openForm: function(){ 
      window.open('http://localhost:8080/form', '_blank', 'location=yes,height=570,width=520,scrollbars=yes,status=yes') 
     }, 
    render: function(){ 
     var mobileMenuClass = this.state.isOpen ? 'navBar navBarOpen cl-effect-21' : 'navBarClose navBar cl-effect-21'; 
     var mobileButton = this.state.isOpen ? 'CLOSE' : 'MENU'; 

     return (
     <div> 
      <div className={mobileMenuClass}> 

      <a href="#" className="mobile_toggle"> 
       <div className="toggle_labels"> 
       <div onClick={this.toggleMenu}className="menu navButton">{mobileButton}</div> 
       </div> 
      </a> 
      <div className="navMenuButtons_desk"> 
      <NavLink to="/" className="navMenuButton">HOME</NavLink> 
      <NavLink to="/about" className="navMenuButton">ABOUT</NavLink> 
      <NavLink to="/faq" className="navMenuButton">FAQ</NavLink> 
      <div className="button_right"> 
       <NavLink target="_blank" className="navButton applyButton" ><div onClick={this.openForm}> 
       APPLY</div> 
       </NavLink> 
      </div> 
      </div> 
      <MobileMenu isOpen={this.state.isOpen} /> 
      </div> 

     </div> 
    ); 
    } 
}); 




var App = React.createClass({ 

    render: function(){ 
    console.log(this.props.location.pathname); 
    const location = this.props.location; 
    return (
     <div> 
     <NavBar /> 
     { this.props.children } 
     <Footer /> 
     </div> 
    ); 
    } 
}); 

答えて

0

あなた<NavLink>コンポーネントはfalseisOpen状態を設定する必要があります。これを行うには関数を渡す必要があります。この線に沿って何か:その後、

var NavBar = React.createClass({ 
    closeMenu: function() { 
    this.setState({ isOpen: false }) 
    } 

    render() { 
    return (
     <div> 
     <NavLink to="/" onClick={this.closeMenu}>HOME</NavLink> 
     </div> 
    ) 
    } 
}) 

そして<Link>

var NavLink = React.createClass({ 
    render() { 
    const { to, onClick, children } = this.props 
    return <Link to={to} onClick={onClick}>{children}</Link> 
    } 
}) 
onClick小道具を渡すためにあなたの <NavLink>を変更
関連する問題