2016-04-28 106 views
0

React路由器有一个奇怪的问题。只有当我从'/'导航到子组件时,activeClassName才会生效。但是,如果我尝试从“更新”导航到“更新密码”,它将无法工作。它将使活动类保持在更新视图,反之亦然,这取决于从“/”导航后首先点击哪条路线。请大家看看下面我的代码:React Router activeClassName不会将类更改为活动路由

我如何定义路由

<Provider store={store}> 
    <Router history={hashHistory}> 
     <Route path="/" component={ Template } > 
     <IndexRoute component={ Welcome } /> 
     <Route path="login" component={ Login } /> 
     <Route path="register" component={ Register } /> 
     <Route onEnter={requireLogin}> 
      <Route path="update" component={ Update } /> 
      <Route path="updatepassword" component={ Update_password } /> 
     </Route> 
     </Route> 
    </Router> 
    </Provider> 

链接:

 <nav className="navbar navbar-default navbar-fixed-top"> 
     <div className="container"> 
      <div className="navbar-header"> 
      <button type="button" className="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"> 
       <span className="sr-only">Toggle navigation</span> 
       <span className="icon-bar"></span> 
       <span className="icon-bar"></span> 
       <span className="icon-bar"></span> 
      </button> 
      <Link to={ '/' } className="navbar-brand">React-Phoenix-Chat</Link> 
      </div> 
      <div className="collapse navbar-collapse" id="navbar"> 
      <ul className="nav navbar-nav navbar-right"> 
       <li> <a onClick={this.handleLogout.bind(this)} href="#" activeClassName="active">Logout</a></li> 
       <li><Link activeClassName="active" to={ 'update' }>Update</Link></li> 
       <li><Link activeClassName="active" to={ 'updatepassword' }>Update Password</Link></li> 
       <li><a href="#">{this.props.user.username}</a></li> 
      </ul> 
      </div> 
     </div> 
     </nav> 

回答

1

我发现这个问题。我不得不改变这一点:

<Route onEnter={requireLogin}> 
    <Route path="/update" component={ Update } /> 
    <Route path="/updatepassword" component={ Update_password } /> 
</Route> 

要这样:

<Route path="/update" component={ Update } onEnter={requireLogin} /> 
<Route path="/updatepassword" component={ Update_password } onEnter={requireLogin} />