将导航选项卡样式类设置为活动,如果当前在该路由中 反应反应路由器.
set nav tab style class to active if currently in that route react react-router
>我有一个反应和反应路由器应用程序,使用 2 个嵌套路由来提供总共 3 个路由:/、/about、/contact。 当我单击 Link 转到每条路线时,我的导航上的选项卡位于父路线中,它会更改样式并显示其活动状态,我相信一些引导魔法。 问题是当我访问/about 或/contact 时,导航选项卡未处于活动状态。 我是新手,但我想我需要将 style 属性绑定到检查路由属性、属性或组件状态的条件。 我不确定如何做到这一点,任何帮助将不胜感激。
导航所在的简化布局
export default class Layout extends React.Component {
render() {
return (
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><Link to="/about">About</Link></li>
<li><Link to="/contact">Contact</Link></li>
</ul>
</div>
)}}
在
渲染路线
render((
<Router history={hashHistory}>
<Route path="/" component={Layout}>
<Route path="/about" component={About}/>
<Route path="/contact" component={Contact}/>
</Route>
</Router>
), document.getElementById('app'))
是的,所以如上所述,li 需要检查布局 props.kids 是否为空,或者它是关于或联系。 我真的不确定如何比较这个.props.children的值,如果它是一个反应组件
提前感谢大家!!
按照我们在评论中的对话,这是您在<li>
标签上获取类名active
方式:
注意:我假设您使用的是 React Router v1.0.x,我强烈建议您使用最新版本 - 2.0,请参阅升级指南
import { Link, History } from 'react-router'
const Tab = React.createClass({
mixins: [ History ],
render() {
let isActive = this.history.isActive(this.props.to, this.props.query)
let className = isActive ? 'active' : ''
return <li className={className}><Link {...this.props}/></li>
}
})
// use it just like <Link/>, and you'll get an anchor wrapped in an `li`
// with an automatic `active` class on both.
<Tab href="foo">Foo</Tab>
如果你使用的是 ES6 类,你会以非常相似的方式做,但不是使用 mixins,而是需要从上下文中"拉取"history
(这是怎么做的 - 同样这是在 React Router v1.0.x 分支上)。
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 如果 a 为 false,则 if(a) === if(false)
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- AngularJS UI路由器不能像ng路由器那样工作
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如果href包含X,请更改href
- 如果localstorage为空,则显示欢迎消息
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- 如果设置了位置,如何在每个状态下检查路由器ui,如果没有,则转到登录页
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- Node.js/Expss.js.如果与通配符路由器一起使用,则无法识别静态路由器
- 将导航选项卡样式类设置为活动,如果当前在该路由中 反应反应路由器.
- 如果 ui 路由器解析的一部分返回 true 或承诺,我如何编码它
- 铁路由器:Don'如果等待更改,则不会重新呈现页面
- 如果请求已被处理,则阻止执行下一个路由器
- 如果ZMQ路由器繁忙,我如何让它引发错误
- Meteor Iron路由器没有'如果数据返回null/undefined,则不调用onBeforeAction