Reactstrap 改变活动的 NavLink onClick

Posted

技术标签:

【中文标题】Reactstrap 改变活动的 NavLink onClick【英文标题】:Reactstrap changing active NavLink onClick 【发布时间】:2020-04-13 13:31:58 【问题描述】:

是否有直接的方法来更改哪个选项卡处于活动状态?此示例默认启用“链接 1”。

const Navi = () => 


  const startChangeVis = id => 
    // do something in here to make clicked NavLink active 
  

  return(
  <div>
      <Nav tabs>
        <NavItem>
          <NavLink id="a" href="#" onClick=() =>  startChangeVis('a') active>Link 1</NavLink>
        </NavItem>
        <NavItem>
          <NavLink id="b" href="#"  onClick=() =>  startChangeVis('b') >Link 2</NavLink>
        </NavItem>
        <NavItem>
          <NavLink id="c" href="#"  onClick=() =>  startChangeVis('c') >Link 3</NavLink>
        </NavItem>
      </Nav>
  </div>
  )

在 ReactStrap Git 页面上,它显示以下内容:

NavItem.propTypes = 
  tag: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
  active: PropTypes.bool,
  // pass in custom element to use

它呈现 html 如下:

<a id="a" href="#" class="nav-link active">Link 1</a>

【问题讨论】:

【参考方案1】:

解决方案:

const Navi = () => 
  const [acn1,setAcn1] = useState('active') // assumes link 1 is default active
  const [acn2,setAcn2] = useState('')
  const [acn3,setAcn3] = useState('')

  const startChangeVis = id => 
    setAcn1('')
    setAcn2('')
    setAcn3('')
    if(id === 'a')      setAcn1('active')
    else if(id === 'b') setAcn2('active')
    else if(id === 'c') setAcn3('active')
  

  return(
  <div>
      <Nav tabs>
        <NavItem>
          <NavLink id="a" href="#" onClick=() =>  startChangeVis('a') className=acn1>Link 1</NavLink>
        </NavItem>
        <NavItem>
          <NavLink id="b" href="#"  onClick=() =>  startChangeVis('b') className=acn2>Link 2</NavLink>
        </NavItem>
        <NavItem>
          <NavLink id="c" href="#"  onClick=() =>  startChangeVis('c') className=acn3>Link 3</NavLink>
        </NavItem>
      </Nav>
  </div>
  )

BootStrap 能够在活动类中解析其他强制类,如下所示

<a id="b" href="#" class="active nav-link">Link 2</a>

【讨论】:

以上是关于Reactstrap 改变活动的 NavLink onClick的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tag 在 NavLink reactstrap 组件中传递属性

reactstrap 导航栏下拉菜单不向右移动

Reactstrap 多级下拉祖先不关闭

反应路由器 NavLink 活动

NavLink 未填充嵌套路由的活动类

activeClassName 不改变活动链接颜色