React-router <Link> 没有活动类

Posted

技术标签:

【中文标题】React-router <Link> 没有活动类【英文标题】:React-router <Link> has no active class 【发布时间】:2016-05-11 21:57:33 【问题描述】:

我希望我的&lt;Link&gt;s 在匹配他们的路线时有一个active 课程。目前生成的&lt;a&gt; 标签不会改变,即使我在链接引用的路线上。

我的链接是这样创建的:&lt;Link to="/status"&gt;STATUS&lt;/Link&gt;

路线:

  <Router>
    <Route path='/' component=App>
      <IndexRoute component=Status />
      <Route path='about' component=About/>
      <Route path='status' component=Status/>
      <Route path='settings' component=Settings/>
    </Route>
  </Router>

这个功能真的存在吗?如果是这样,我需要改变什么才能让它工作。

PS:我正在使用 react-router 和 redux-router。我也使用默认的 HashHistory,因为它是 nwjs-app

【问题讨论】:

【参考方案1】:

使用activeClassName 属性指定链接处于活动状态时要添加的类。

<Link to="/status" activeClassName="active">STATUS</Link>

【讨论】:

根据 API,您应该是对的,但它仍然对我不起作用 -.- 如果更新有帮助,将尝试。 更新到 react-router 2.0.0-rc5 解决了这个问题,谢谢。 改用&lt;NavLink /&gt;【参考方案2】:

react-router-dom 4.2.2 版也有类似的问题。 而不是Link 组件,我可以使用包含activeClassName 属性的NavLink 组件。

来自文档:

NavLink:一个特殊版本,当它与当前 URL 匹配时,它将向呈现的元素添加样式属性。

这是一个代码示例

<ul className="menu col-sm-12">
  <li><NavLink to=`/events` activeClassName="current">Events</NavLink></li>
</ul>

注意:activeClassName 已从 React Router v4 (relevant answer) 的 Link 组件中删除。

【讨论】:

以上是关于React-router <Link> 没有活动类的主要内容,如果未能解决你的问题,请参考以下文章

React-router:使用 <Link> 作为可点击的数据表行

强制 React-Router <Link> 加载页面,即使我们已经在该页面上

通过 React-Router v4 <Link /> 传递值

ReactJS + React Router:如何从 React-Router 的 <Link> 禁用链接?

在将 react-router 5 与 redux 7 一起使用时,react-router <Link> 在转到新路由后不会重置状态

Storybook w/ react-router - 你不应该在 <Router> 之外使用 <Link>