当前位置: 首页 > 知识库问答 >
问题:

如何从React路由器向Link添加活动类?

夏长卿
2023-03-14

我使用链接创建了一个引导式侧边栏。以下是我的代码片段:

<ul className="sidebar-menu">
  <li className="header">MAIN NAVIGATION</li>
  <li><Link to="dashboard"><i className="fa fa-dashboard"></i> <span>Dashboard</span></Link></li>
  <li><Link to="email_lists"><i className="fa fa-envelope-o"></i> <span>Email Lists</span></Link></li>
  <li><Link to="billing"><i className="fa fa-credit-card"></i> <span>Buy Verifications</span></Link></li>
</ul>

我想在包装元素

我还发现https://github.com/insin/react-router-active-component 但感觉这是没有必要的。

在React路由器中,这是可能的还是需要使用外部解决方案?


共有3个答案

葛安和
2023-03-14

对我来说,有效的是使用NavLink,因为它有这个活动类属性。

>

  • 首先导入它

    import { NavLink } from 'react-router-dom';
    

    使用activeClassName获取活动类属性。

    <NavLink to="/" activeClassName="active">
     Home
    </NavLink>
    
    <NavLink to="/store" activeClassName="active">
     Store
    </NavLink>
    
    <NavLink to="/about" activeClassName="active">
     About Us
    </NavLink>
    

    通过属性active在css中设置类的样式。

    .active{
      color:#fcfcfc;
     }
    

  • 解阳泽
    2023-03-14

    React路由器V4附带了一个现成的NavLink组件

    要使用,只需将activeClassName属性设置为您已适当设置样式的类,或直接将activeStyle设置为您想要的样式。有关更多详细信息,请参阅文档。

    <NavLink
      to="/hello"
      activeClassName="active"
    >Hello</NavLink>
    
    冀景明
    2023-03-14

    在链接组件上,现在可以添加activeClassName或设置activeStyle。

    这些允许您轻松地将样式添加到当前活动链接。

    以前,您可以创建一个自定义组件,它像包装器一样工作,以便与以下逻辑链接。

    在名为nav_link.js的文件中

    import React from 'react';
    import { Link } from 'react-router-dom';
    import PropTypes from 'prop-types';
    
    class NavLink extends React.Component {
        render() {
            var isActive = this.context.router.route.location.pathname === this.props.to;
            var className = isActive ? 'active' : '';
    
            return(
                <Link className={className} {...this.props}>
                    {this.props.children}
                </Link>
            );
        }
    }
    
    NavLink.contextTypes = {
        router: PropTypes.object
    };
    
    export default NavLink;
    

    并在组件中使用如下所示:

    ...
    import NavLink from "./nav_link";
    .....
    
    <nav>
        <ul className="nav nav-pills pull-right">
            <NavLink to="/">
                <i className="glyphicon glyphicon-home"></i> <span>Home</span>
            </NavLink>
            <NavLink to="about">
                <i className="glyphicon glyphicon-camera"></i> <span>About</span>
            </NavLink>
        </ul>
    </nav>
    
     类似资料:
    • Angular2有一个routerLinkActive指令,如果路由是活动的,它会向元素添加类。我想在路由不活动时添加一个类。有办法做到这一点吗?

    • 我正在尝试使用react router(版本^1.0.3)做一个简单的重定向到另一个视图的操作,我只是觉得有些累。 我只需要将用法发送到“/login”,就这样。 我能做什么? 控制台中的错误: 未捕获的引用错误:未定义PropType 用我的路线归档

    • 我试图熟悉EIP和Apache骆驼,我有一个用例,我不太确定如何使用骆驼来表达或实现 用例: 假设您设计了一个集成解决方案,它从ftp中获取文件,进行一些处理并将其上传到队列。您选择Apache Camel来实现此解决方案,并且您在JavaDSL中的路由如下所示: 路线可能比这复杂得多,但在这里没关系。想象一下你的解决方案是如此的成功,以至于有一个计划来实现一个服务,任何人都可以添加他的ftp服务

    • 问题内容: 我有五个按钮,是动态创建的。我的目标是:单击任何按钮以向其中添加活动类,当然还有其他任何人可以通过该活动类将其删除。我该如何实现? 问题答案: 您需要将状态引入组件并在事件处理程序中进行设置。例如render方法的输出: 事件处理程序(元素方法):