React Bootsrap Nav устанавливает активный LinkContainer на Nav Loaded
У меня есть компонент с Nav на левой стороне и другой контент на правой стороне. Когда компонент "MyBookingsOverview" загружен, я хотел бы установить первый NavItem как активный и перенаправить на этот маршрут. Я еще не смог найти способ. У кого-нибудь есть совет? Вот мой код:
export default class MyActivities extends Component {
render() {
return (
<Grid fluid>
<Col lg={2}>
<Nav />
</Col>
<Col lg={10}>
<Routes />
</Col>
</Grid>
);
}
}
export default class MyActivityNav extends Component {
render() {
return (
<div className="itemRequestNav">
<Nav bsStyle="pills" stacked>
<LinkContainer to={routes.ACCOUNT_ACTIVITIES_OVERVIEW}>
<NavItem>Übersicht</NavItem>
</LinkContainer>
<LinkContainer to={routes.ACCOUNT_ACTIVITIES_REQUESTS}>
<NavItem>Anfragen</NavItem>
</LinkContainer >
<LinkContainer to={routes.ACCOUNT_ACTIVITIES_BOOKINGS}>
<NavItem>Buchungen</NavItem>
</LinkContainer >
</Nav>
</div>
);
}
}
export default ({ childProps }) =>
<Switch>
<PrivateRoute exact path={routes.ACCOUNT_ACTIVITIES_OVERVIEW} component={MyRequests} />
<PrivateRoute exact path={routes.ACCOUNT_ACTIVITIES_BOOKINGS} component={MyRequests} />
<PrivateRoute exact path={routes.ACCOUNT_ACTIVITIES_REQUESTS} component={MyRequests} />
</Switch>;
Привет, Майкл
1 ответ
Если вы хотите сделать условное оформление для ссылки в вашем Nav, вы должны использовать компонент NavLink из activ -router и установить activeClassName
поддержать с вашим классом CSS.
<Nav bsStyle="pills" stacked>
<NavLink to={routes.ACCOUNT_ACTIVITIES_OVERVIEW}
activeClassName="selected">
<NavItem>Übersicht</NavItem>
</NavLink>
<NavLink to={routes.ACCOUNT_ACTIVITIES_REQUESTS}
activeClassName="selected">
<NavItem>Anfragen</NavItem>
</NavLink>
<NavLink to={routes.ACCOUNT_ACTIVITIES_BOOKINGS}
activeClassName="selected">
<NavItem>Buchungen</NavItem>
</NavLink>
</Nav>
Как только вы будете перенаправлены на правильный компонент, который соответствует вашему Маршруту, он будет автоматически выбран, и ваш стиль будет применен к этой NavLink.
Если вам нужно программно перенаправить на другой маршрут, взгляните на этот вопрос.