【问题标题】:Choose item from Navbar - item stays highlited从导航栏中选择项目 - 项目保持突出显示
【发布时间】:2019-07-07 00:07:40
【问题描述】:

我有这样的简单导航栏:

 <Navbar.Collapse>
    <Nav>
      <NavItem eventKey={1} href={`${process.env.PUBLIC_URL}/`}>
        Blah
      </NavItem>
      <NavItem eventKey={1} href={`${process.env.PUBLIC_URL}/SomePage`}>
        SomePage
      </NavItem>
    </Nav>
  </Navbar.Collapse>

当我将光标放在 NavItem 上时,它会突出显示,但我希望在单击它后突出显示它,以告知我在页面上的位置。 所以:总结一下,有人知道如何突出显示选定的navitem吗?

【问题讨论】:

  • 您必须将最后点击的导航存储在您所在的州。在您的渲染中,为与所选的具有相同id 的中殿提供不同的类名

标签: reactjs navbar react-bootstrap


【解决方案1】:

我认为首先您需要为每个NavItem 使用唯一事件键

Nav 有一个 prop activeKey 和一个处理程序 onSelect,利用它来设置 Nav 上的 activekey

<Nav activeKey={(this.state.activeKey)} 
onSelect={e => {e.preventDefault(); this.handleSelect(e);}>

在此之后,您将在被点击的活动项目上获得一个 active 属性,所以现在是时候使用一些 CSS 伪选择器了。

.NavItem:active{
  background-color: green; //some color of your choice//
}

【讨论】:

  • 我做了类似的事情:&lt;Nav bsStyle="pills" activeKey={(this.state.activeKey)} onSelect={e =&gt; {this.handleSelect(e)}}&gt; 但我没有保持高亮
  • 不,不是我想要的方式。当我将光标放在它上面时它会突出显示,但之后它不会突出显示。
  • 我认为这可能没有帮助。我在控制台中看到了问题。如果我单击该项目,页面会刷新并且 activeKey 消失。
  • 你应该在处理程序中执行 e.preventDefault()
  • 仍然不行,我会试着弄清楚发生了什么......现在我得到了:TypeError: e.preventDefault is not a function
猜你喜欢
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2014-06-04
  • 2020-05-08
  • 1970-01-01
  • 2023-03-31
  • 2019-01-18
相关资源
最近更新 更多