【发布时间】:2017-09-24 12:29:58
【问题描述】:
我的 Bootstrap 导航栏工作正常。当我单击 MenuItem 时,它被设置为“活动”。但我希望这样,例如,当我转到主页 > 状态 > 新状态时,MenuItem Home 将“活动”。我的 Bootstrap Navbar 包含以下代码:
import React from 'react';
import MenuNavItem from './MenuNavItem.jsx'
export default class Menu extends React.Component {
constructor() {
super();
}
render() {
return (
<nav id="idNavMenu" class="navbar navbar-default" role="navigation">
{/*<a class="navbar-brand" href="/inicio"><img id="idFotoLogotipo" width="200px" src="./assets/images/cabecera_CE.jpg"/></a>*/}
<a class="navbar-brand" href="http://www.upct.es/"><span id="idTextoLogotipo">UPCT</span></a>
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Menú</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<MenuNavItem to='/alumno/inicio' index={true}>Inicio</MenuNavItem>
<MenuNavItem to='/alumno/nueva_incidencia'>Nueva Incidencia</MenuNavItem>
<MenuNavItem to='/alumno/mis_incidencias'>Mis Incidencias</MenuNavItem>
</ul>
<ul class="nav navbar-nav navbar-right">
<MenuNavItem to=''><span class="glyphicon glyphicon-off"></span> Salir</MenuNavItem>
</ul>
</div>
</nav>
);
}
}
还有一个 Menu-Wrapper,它可以让被点击的 MenuItem 设置为活动状态:
import React from 'react'
import { Link, IndexLink, withRouter } from 'react-router'
export default class NavItem extends React.Component {
constructor() {
super();
}
render() {
const { router, index, to, children, ...props } = this.props;
let isActive = false;
if (router.isActive('./', true) && index) {
isActive = true
} else {
isActive = router.isActive(to)
}
const LinkComponent = index ? IndexLink : Link
return (
<li className={isActive ? 'active' : ''}>
<LinkComponent to={to} {...props}>{children}</LinkComponent>
</li>
);
}
}
NavItem = withRouter(NavItem);
关于我的菜单,如果我在'/alumno/inicio/OTHER-ROUTE',我希望'Inicio' 是'active'。有人知道我该怎么做吗? (在我的 NavBar 中定义的父 MenuItem,在这种情况下,'Inicio'- 路由 - 在这种情况下 '/alumno/inicio/OTHER-ROUTE' 其中 'OTHER-ROUTE' 未在我的 NavBar 上定义 - 设置为活动)非常感谢。
【问题讨论】:
标签: reactjs twitter-bootstrap-3 ecmascript-6 react-router navbar