在 Navlink 上处于活动状态时渲染不同的组件

Khr*_*riz 5 reactjs react-router

我正在使用react-routerNavLink组件来显示侧边栏菜单,并且在NavLink我有一个图标。我想更改图标,以便在链接处于活动状态时填充图标。代码是这样的:

<NavLink
  to={route}
  exact
  activeClassName="selected"
>
  <Icon>{icon}</Icon>
</NavLink>
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个NavLink组件内渲染不同的组件?

pin*_*ric 4

您可以在渲染函数中执行类似的操作:

class YourComponent extends React.Component {
  render() {
    var isActive = this.context.router.route.location.pathname === this.props.to;

    return(
        <NavLink
          to={route}
          exact
          activeClassName="selected"
        >
         <Icon>{isActive && icon || otherIcon}</Icon>
        </NavLink>
    );
  }
}

NavLink.contextTypes = {
    router: PropTypes.object
};
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您实际上是在检查您正在渲染的路线是否是活动路线,并在万一选择正确的图标