Bootstrap NavBar 不设置 li class="active" 与 React-Router。响应式JS
Bootstrap NavBar do not set up li class="active" with React-Router. ReactJS
我有一个名为 MenuAlumno
的 React 组件,它是一个 Bootstrap 导航栏。我使用 ES6 - ReactJS - React-Router。
这是我的组件:
render() {
return (
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle navbar-collapse-left" data-toggle="collapse" data-target="#idNavBarCollapsed" aria-expanded="false">
<span class="sr-only">Menú</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand visible-xs-block" /*href="http://www.upct.es/"*/><span id="idTextoLogotipo">- INCIDENCIAS -</span></a>
</div>
<div id="idNavBarCollapsed" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-left">
<li><Link to='/administrador/inicio'>Inicio</Link></li>
<li><Link to='/administrador/nueva_incidencia'>Nueva Incidencia</Link></li>
<li><Link to='/administrador/incidencias_recibidas'>Incidencias Recibidas</Link></li>
<li><Link to='/administrador/informes'>Informes</Link></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="divider visible-xs-block"></li>
<p class="navbar-text navbar-text-center hidden-xs"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre} ({this.state.dni})</p>
<p class="navbar-text navbar-text-center visible-xs-block"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre}</p>
<li class="navbar-text-center"><a href="http://www.upct.es/"><span class="glyphicon glyphicon-off"></span> Salir</a></li>
</ul>
</div>
</nav>
);
}
但是当我点击 <li>
时,它没有设置为活动状态。我该如何解决这个问题?我已经尝试了很多不同的东西,但我还没有实现....
此外,我希望如果我在导航栏上未定义的路线上(例如:/administrador/inicio/hi/How_are_you/Fine
),则相应的 <li>
将设置为活动状态(在此示例中:/administrador/inicio
) 但如果我有另一个元素(在 NavBar 上定义)为: /administrador/inicio/hi
这不是活动的(我通过 window.location.pathname.include ('/administrador/inicio') -这将激活两个链接-)。仅激活父 <li>
(<li>
使我进入那个 url),而不是 'possible parents'.
此外,我希望当我单击 F5 时,它会继续处于活动状态。
在这个项目中我不能使用React-Bootstrap,所以这个选项是不可能的。
我想了很久想解决这个问题,但还是没搞定。欢迎任何帮助。
谢谢大家
我以前 运行 遇到过这个问题。你应该注意一些关于'this props'的路线,你可以发现路线发生了变化,然后你通过这个变化来做一些事情。
可能您正在寻找这个
var selector = '.nav li';
$(selector).on('click', function(){
$(selector).removeClass('active');
$(this).addClass('active');
});
li.active {
color: Red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav">
<li style="cursor:pointer">Inicio</li>
<li style="cursor:pointer">Nueva Incidencia</li>
<li style="cursor:pointer">Incidencias Recibidas</li>
<li style="cursor:pointer"> Informes</li>
</ul>
已解决:
render() {
return (
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle navbar-collapse-left" data-toggle="collapse" data-target="#idNavBarCollapsed" aria-expanded="false">
<span class="sr-only">Menú</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand visible-xs-block" /*href="http://www.upct.es/"*/><span id="idTextoLogotipo">- INCIDENCIAS -</span></a>
</div>
<div id="idNavBarCollapsed" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-left">
<li><NavLink to='/administrador/inicio'>Inicio</NavLink></li>
<li><NavLink to='/administrador/nueva_incidencia'>Nueva Incidencia</NavLink></li>
<li><NavLink to='/administrador/incidencias_recibidas'>Incidencias Recibidas</NavLink></li>
<li><NavLink to='/administrador/informes'>Informes</NavLink></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="divider visible-xs-block"></li>
<p class="navbar-text navbar-text-center hidden-xs"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre} ({this.state.dni})</p>
<p class="navbar-text navbar-text-center visible-xs-block"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre}</p>
<li class="navbar-text-center"><a href="http://www.upct.es/"><span class="glyphicon glyphicon-off"></span> Salir</a></li>
</ul>
</div>
</nav>
);
}
我有一个名为 MenuAlumno
的 React 组件,它是一个 Bootstrap 导航栏。我使用 ES6 - ReactJS - React-Router。
这是我的组件:
render() {
return (
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle navbar-collapse-left" data-toggle="collapse" data-target="#idNavBarCollapsed" aria-expanded="false">
<span class="sr-only">Menú</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand visible-xs-block" /*href="http://www.upct.es/"*/><span id="idTextoLogotipo">- INCIDENCIAS -</span></a>
</div>
<div id="idNavBarCollapsed" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-left">
<li><Link to='/administrador/inicio'>Inicio</Link></li>
<li><Link to='/administrador/nueva_incidencia'>Nueva Incidencia</Link></li>
<li><Link to='/administrador/incidencias_recibidas'>Incidencias Recibidas</Link></li>
<li><Link to='/administrador/informes'>Informes</Link></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="divider visible-xs-block"></li>
<p class="navbar-text navbar-text-center hidden-xs"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre} ({this.state.dni})</p>
<p class="navbar-text navbar-text-center visible-xs-block"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre}</p>
<li class="navbar-text-center"><a href="http://www.upct.es/"><span class="glyphicon glyphicon-off"></span> Salir</a></li>
</ul>
</div>
</nav>
);
}
但是当我点击 <li>
时,它没有设置为活动状态。我该如何解决这个问题?我已经尝试了很多不同的东西,但我还没有实现....
此外,我希望如果我在导航栏上未定义的路线上(例如:/administrador/inicio/hi/How_are_you/Fine
),则相应的 <li>
将设置为活动状态(在此示例中:/administrador/inicio
) 但如果我有另一个元素(在 NavBar 上定义)为: /administrador/inicio/hi
这不是活动的(我通过 window.location.pathname.include ('/administrador/inicio') -这将激活两个链接-)。仅激活父 <li>
(<li>
使我进入那个 url),而不是 'possible parents'.
此外,我希望当我单击 F5 时,它会继续处于活动状态。
在这个项目中我不能使用React-Bootstrap,所以这个选项是不可能的。
我想了很久想解决这个问题,但还是没搞定。欢迎任何帮助。
谢谢大家
我以前 运行 遇到过这个问题。你应该注意一些关于'this props'的路线,你可以发现路线发生了变化
可能您正在寻找这个
var selector = '.nav li';
$(selector).on('click', function(){
$(selector).removeClass('active');
$(this).addClass('active');
});
li.active {
color: Red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav">
<li style="cursor:pointer">Inicio</li>
<li style="cursor:pointer">Nueva Incidencia</li>
<li style="cursor:pointer">Incidencias Recibidas</li>
<li style="cursor:pointer"> Informes</li>
</ul>
已解决:
render() {
return (
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle navbar-collapse-left" data-toggle="collapse" data-target="#idNavBarCollapsed" aria-expanded="false">
<span class="sr-only">Menú</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand visible-xs-block" /*href="http://www.upct.es/"*/><span id="idTextoLogotipo">- INCIDENCIAS -</span></a>
</div>
<div id="idNavBarCollapsed" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-left">
<li><NavLink to='/administrador/inicio'>Inicio</NavLink></li>
<li><NavLink to='/administrador/nueva_incidencia'>Nueva Incidencia</NavLink></li>
<li><NavLink to='/administrador/incidencias_recibidas'>Incidencias Recibidas</NavLink></li>
<li><NavLink to='/administrador/informes'>Informes</NavLink></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="divider visible-xs-block"></li>
<p class="navbar-text navbar-text-center hidden-xs"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre} ({this.state.dni})</p>
<p class="navbar-text navbar-text-center visible-xs-block"><span class="glyphicon glyphicon-user"></span> Bienvenido, {this.state.nombre}</p>
<li class="navbar-text-center"><a href="http://www.upct.es/"><span class="glyphicon glyphicon-off"></span> Salir</a></li>
</ul>
</div>
</nav>
);
}