reactjs - 在 Navlink 上激活时渲染不同的组件
问题描述
我正在使用react-router
'sNavLink
组件来显示侧边栏菜单,并且在里面NavLink
我有一个图标。我想更改图标,以便在链接处于活动状态时填充图标。代码是这样的:
<NavLink
to={route}
exact
activeClassName="selected"
>
<Icon>{icon}</Icon>
</NavLink>
有没有办法在一个组件内渲染不同的NavLink
组件?
解决方案
您可以在渲染函数中执行以下操作:
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
};
这样,您实际上是在检查您正在渲染的路线是否是活动路线,以防万一选择正确的图标
推荐阅读
- node.js - Firebase 云消息传递未在 iOS 14 上提供推送通知
- python - 使用python进行平衡采样
- django - Django 按外键字段值分组对象
- cypress - MSAL 和 OAuth 2.0 - 以编程方式请求授权代码
- bash - 列出不是符号链接目标的目录
- php - 在 foreach 中对结果进行排序
- c++ - GetWindowTextA 无法获取 ComboBox MFC C++ 的文本
- angular - 从请求标头中删除授权,特别是 http 调用
- vue.js - Vue中如何使用动态名称vue组件?
- javascript - 从导航栏中的 li 项中添加类/删除类(React)