React 路由器 v6 的 NavLink 组件确实没有 isActive 属性。在 React 路由器 v6 中,可以使用 useLocation 钩子和 matchPath 函数来实现类似的功能。
useLocation 钩子用于获取当前页面的 URL 信息,而 matchPath 函数用于判断当前 URL 是否与指定的路径匹配。结合这两个工具,可以手动实现 NavLink 的 isActive 功能。
以下是一个示例代码:
import { useLocation } from 'react-router-dom';
import { matchPath } from 'react-router';
function NavLink({ to, activeClassName, children }) {
const location = useLocation();
const isActive = !!matchPath(location.pathname, to);
return (
<a href={to} className={isActive ? activeClassName : ''}>
{children}
</a>
);
}
在上述代码中,我们自定义了一个 NavLink 组件,它接受 to、activeClassName 和 children 作为属性。通过 useLocation 钩子获取当前页面的 URL 信息,并使用 matchPath 函数判断当前 URL 是否与 to 属性匹配。如果匹配,则给链接添加 activeClassName 类名,否则不添加。
这样,我们就可以在 React 路由器 v6 中使用自定义的 NavLink 组件来实现类似于 React 路由器 v5 中 NavLink 的 isActive 功能了。
请注意,上述代码仅为示例,实际使用时可能需要根据具体情况进行适当的修改和调整。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云函数(SCF)。
请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行。
领取专属 10元无门槛券
手把手带您无忧上云