检测链接是否在react中处于活动状态的props

IT技术 reactjs react-router emotion
2021-05-22 05:42:43

我有一个NavLink有子组件的

<NavLink
    className={StyledAppNavItem}
    activeClassName={StyledAppNavItemActive}
    to={link.path}
>
    <Icon size={28} icon={link.icon} color={isActive?'red':'blue'}/>
    <StyledAppNavName>{link.name}</StyledAppNavName>
</NavLink>

activeClassName当链接处于活动状态时附加喜欢,我需要检测此链接是否处于活动状态并向其子组件发送一个propsIcon

有点像 <Icon color={linkisActive?'red':'blue'}/>

1个回答

不幸的是,没有办法isActiveNavLink. 您需要创建自定义NavLink. 像这样的东西:

function MyNavLink() {
    return (
        <Route path={link.path} children={({ match }) => (
            <Link
                className={`${StyledAppNavItem} ${match ? StyledAppNavItemActive : ''}`}
                to={link.path}
            >
                <Icon size={28} icon={link.icon} color={match ? 'red' : 'blue'}/>
                <StyledAppNavName>{link.name}</StyledAppNavName>
            </Link>
        )} />
    );
}

或者您可以将 Route 添加到您当前的组件中:

<NavLink
    className={StyledAppNavItem}
    activeClassName={StyledAppNavItemActive}
    to={link.path}
>
    <Route path={link.path} children={({ match }) => (
        <Icon size={28} icon={link.icon} color={match?'red':'blue'}/>
    )} />
    <StyledAppNavName>{link.name}</StyledAppNavName>
</NavLink>