【发布时间】:2020-04-17 20:23:59
【问题描述】:
这是我的第一个 reactjs 应用程序(长期 Angular 开发人员想看看对方是什么样的)。我想在非活动链接上添加一个“空心”类。我正在使用react-router-dom。这是我的简单菜单:
import React from 'react';
import {NavLink} from 'react-router-dom';
const Menu = () => {
return (
<div className="button-group no-gaps">
<NavLink to="/work-items"><a className="button">Work Items</a></NavLink>
<NavLink to="/settings"><a className="button">Settings</a></NavLink>
</div>
);
}
export default Menu;
我该怎么做呢?我看到 react-router-dom 在 NavLink 上有一个 activeClassName 属性,但没有 inactiveClassName 属性?
编辑:
我想在<NavLink> 内的<a> 的inactiveRoute 上动态添加“空心”类。在下面的代码中,工作项路由处于非活动状态。
import React from 'react';
import {NavLink} from 'react-router-dom';
const Menu = () => {
return (
<div className="button-group no-gaps">
<NavLink to="/work-items"><a className="button hollow">Work Items</a></NavLink>
<NavLink to="/settings"><a className="button">Settings</a></NavLink>
</div>
);
}
export default Menu;
编辑: machineghost 使用 useLocation 钩子为我指明了正确的道路。这是我的工作解决方案。
import React, {useEffect} from 'react';
import {NavLink, useLocation} from 'react-router-dom';
const Menu = () => {
const location = useLocation();
useEffect(()=> {
console.log('Location Changed', location);
}, [location]);
return (
<div className="button-group no-gaps">
<NavLink
to ="/work-items"
className={`button ${location.pathname === '/work-items' ? '':'hollow'}`}
>Work Items</NavLink>
<NavLink
to="/settings"
className={`button ${location.pathname === '/settings' ? '':'hollow'}`}
>Settings</NavLink>
</div>
);
}
export default Menu;
【问题讨论】: