【发布时间】:2018-10-23 10:13:10
【问题描述】:
我有一个带有标题和侧边栏的组件,它包装了我的应用程序的路由器,我遇到的问题是 <NavLink> 没有更新路由更改,假设这个问题的原因是它们高于路由器,因此不受更改的影响,我尝试了所有可能的方法但没有解决方案,我怎样才能使<NavLink> 将active 类添加到当前路由?
这是我的 app.js
<Switch>
<Route path="/login" component={ Login } />
<PrivateRoute path="/" component={ Dashboard } exact />
<PrivateRoute path="/members" component={ Members } exact />
<PrivateRoute path="/payments" component={ Bills } exact />
<PrivateRoute path="/gas-stations" component={ GasStations } exact />
<PrivateRoute path="/transactions" component={ Transaction } exact />
<PrivateRoute path="/cms" component={ CMS } />
<PrivateRoute path="/members/:member_id" component={ Member } />
<PrivateRoute path="/gas-stations/:gs" component={ GS } />
<PrivateRoute path="/transactions/:transaction_id" component={ FoundTransaction } />
<PrivateRoute path="/payments/:payment_id" component={ Payment } />
</Switch>
我的私人路由.js
import React from 'react';
import { Route, Redirect, withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import Container from 'components/container';
const PrivateRoute = ({ component : Component, authenticated, ...rest }) => {
return (
<Route { ...rest } render={ (props) => (
authenticated === true
? <Container> // this is the component that wraps the header and the sidebar
<Component { ...props } />
</Container>
: <Redirect to="/login" />
) } />
)
}
const state_to_props = (state, prop) => {
return {
authenticated : state.authenticated
}
}
export default connect(state_to_props)(withRouter(PrivateRoute));
container.js
return (
<div>
<Header />
<SideMenu />
<div className="app-content">
{ props.children }
</div>
</div>
)
side-menu.js
<li>
<NavLink to="/" exact> <span>Dashboard</span> </NavLink>
</li>
<li>
<NavLink exact to="/members"> <span>Members</span> </NavLink>
</li>
<li>
<NavLink exact to="/gas-stations"> <span>Gas Stations</span> </NavLink>
</li>
<li>
<NavLink exact to="/payments"> <span>Payments</span> </NavLink>
</li>
<li>
<NavLink exact to="/transactions"> <span>Transactions</span> </NavLink>
</li>
<li>
<NavLink exact to="/cms"> <span>CMS</span> </NavLink>
</li>
如何更新此组件,以便<NavLink> 继续将“活动”类添加到侧边栏中的正确项目?
【问题讨论】:
标签: javascript reactjs react-router react-router-v4 react-router-dom