当前位置: 首页 > 面试题库 >

如何在react-router中为Link或IndexLink的包装元素设置activeClassName?

夏侯昆琦
2023-03-14
问题内容

我是ReactJS世界的新手,并且想知道如何将活动的类名传递给<li>元素而不是<a>(Link)元素。

现在,我有这种代码。单击时,锚类会更改。

<li><IndexLink to='/' activeclassName='active'>A</IndexLink></li>
<li><Link to='/b' activeclassName='active'>B</Link></li>
<li><Link to='/c' activeclassName='active'>C</Link></li>

但我想得到类似的东西:

<li activeclassName='active'><IndexLink to='/'>A</IndexLink></li>
<li activeclassName='active'><Link to='/b'>B</Link></li>
<li activeclassName='active'><Link to='/c'>C</Link></li>

提前致谢


问题答案:

您需要将其封装<li>为路由器感知组件:

import { Link, IndexLink } from 'react-router'

class NavItem extends React.Component {
  render () {
    const { router } = this.context
    const { index, onlyActiveOnIndex, to, children, ...props } = this.props

    const isActive = router.isActive(to, onlyActiveOnIndex)
    const LinkComponent = index ? Link : IndexLink

    return (
      <li className={isActive ? 'active' : ''}>
        <LinkComponent {...props}>{children}</LinkComponent>
      </li>
    )
  }
}

用法:

<ul>
  <NavItem to='/' index={true}>Home</NavItem>
  <NavItem to='/a'>A</NavItem>
</ul>

我从react-router-bootstrap模块https://github.com/react-bootstrap/react-router-
bootstrap/blob/master/src/LinkContainer.js进行了检查
。我没有测试它,所以让我知道它如何进行。



 类似资料:
  • 问题内容: 我正在使用react-native,并且创建了一个Alert元素。 现在,我想对其应用某种样式。假设我要为其应用红色背景色和白色的文本。 我该如何实现?可能吗? 问题答案: 您可以使用自定义库,例如react-native-modalbox。 您将可以根据需要设置样式的样式: 您可以使用打开模态 查看示例以查看更多选项。 奖励 :如果您想为react-native找到一个好的库,请尝试

  • dom中有两个 ,我想使用JavaScript/jQuery将这两个 包装到一个包装器div中。 有没有办法这样做? 原来的节点是这样的: 我想在那些周围添加包装器div,它应该如下所示: 上面的插入应该仅来自javascript或jquery。 先谢谢你。

  • 问题内容: 我正在用react-router进行反应。我正在尝试在react-router的“链接”中传递属性 “链接”呈现页面,但不将属性传递给新视图。下面是查看代码 如何使用“链接”传递数据? 问题答案: 此行缺失: 应该: 鉴于以下情况 (过时的v1) : 自v4起最新 : 并在组件中: 从您在文档上发布的链接,朝页面底部: 给定一条路线 使用一些存根查询示例更新了代码示例: 参见:http

  • 问题内容: 我有以下几点: 使用DefaultRoute时,由于任何* Dashboard需要在Dashboard中呈现,因此SearchDashboard呈现不正确。 我想在“应用”路由内将DefaultRoute指向路由“ searchDashboard”。这是我可以使用React Router进行的操作,还是应该为此使用常规Javascript(用于页面重定向)? 基本上,如果用户转到主页,

  • 我有以下几点: 使用DefaultRoute时,SearchDashboard渲染不正确,因为任何*仪表板都需要在仪表板中渲染。 我想为我的默认路线内的"应用程序"路由指向路由"搜索仪表板"。这是我可以用React路由器做的事情吗,或者我应该为此使用普通的Javascript(页面重定向)? 基本上,如果用户转到主页,我希望将其发送到搜索仪表板。所以我想我正在寻找一个与

  • 如何在Elm中设置Html元素的焦点?我试图在元素上设置自动聚焦属性,它只在页面加载上设置焦点。