【问题标题】:React router NavLink active attribute instead of activeClassName反应路由器 NavLink 活动属性而不是 activeClassName
【发布时间】:2019-09-25 11:21:14
【问题描述】:

有没有办法在 React Router NavLink 上的 active 属性而不是 activeClassName 中设置活动状态? 由于特定原因,它需要处于活动状态。 NavLink 中有这个isActive 函数,我认为它可能对实现我的需要有用。但到目前为止我还没有结果。我在想类似下面的东西,但它不起作用。

我尝试过的:

const abc = (match, location) => {
  return match;
}
<NavLink to="/faq" isActive={abc} active={props.isActive ? "true" : null}>
  FAQs
</NavLink>

【问题讨论】:

    标签: reactjs react-router active-attr


    【解决方案1】:

    目前还不是很清楚您要实现什么,但这是我的最佳猜测:您想通过某种方式了解 NavLink 是否处于活动状态。

    默认情况下,如果 NavLink 与您在 to 中提供的 URL 匹配,则该导航链接处于活动状态。您可以使用 React Router 提供的 matchPath 方法手动执行此检查:

    import { matchPath } from "react-router";
    
    const toUrl = '/faq';
    
    const isActive = matchPath(toURL, {
      path: this.props.match.path,
    });
    
    <NavLink to={toUrl}>
      FAQs
    </NavLink>
    

    这将检查当前路径是否匹配“/faq”。现在您有一个变量isActive,当 NavLink 处于活动状态时为真,在非活动时为假。你可以随心所欲地使用它。

    我不确定你想用 active 道具完成什么,但这不是 NavLink 的有效道具。

    【讨论】:

    • 如何获取活动属性中的值?我试过active= {isActive ? "true" : null},但它总是返回true,即使它不在匹配的位置
    • 我改变了答案。现在看看有没有帮助。一般来说,您的问题非常模糊,您需要努力使其更加清晰,这种方式很难帮助您。
    • 感谢您的意见,我已经更新了我的问题,并尽我所能把它说清楚。我知道活动属性不是 NavLink 的一部分,我只是好奇是否有办法在属性中添加活动状态而不是类名。或者有没有办法解决这个问题。因为在 HTML 中 NavLink 会被渲染为 a 元素,所以我想在 a 元素上添加 active 属性。
    • 您的问题似乎仍然没有多大意义,我仍然不知道您试图用该代码实现什么。 abc 方法应该做什么? active={props.isActive ? "true" : null} 应该是做什么用的? “设置活动状态”是什么意思?
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2021-03-30
    • 2018-08-24
    • 2017-03-06
    • 2020-11-01
    • 1970-01-01
    相关资源
    最近更新 更多