我正在使用React创建导航列表,在活动时将activeClassName类添加到链接中,但是我无法弄清楚如何将“非活动”类添加到导航中不活动的链接?提前感谢您的帮助。
<ul className={styles.desktopLinks}>
{this.products.map((value, key) => {
return (
<li key={key}>
<Link to={value.to} activeClassName="__link-active">
<FormattedMessage {...value.msg} />
</Link>
</li>
);
})}
</ul>
答案 0 :(得分:0)
您可以尝试使用className
属性向链接添加类,并在activeClassName
中覆盖它的样式。
答案 1 :(得分:0)
<ul className={styles.desktopLinks}>
{this.products.map((value, key) => {
let active = this.props.location.pathname.indexOf(value.to) > -1 ? true : false;
return (
<li key={key}>
<Link to={value.to} activeClassName={active ? '__link-active' : '__link-inactive'}>
<FormattedMessage {...value.msg} />
</Link>
</li>
);
})}
</ul>
答案 2 :(得分:0)
作为实现目标的另一种方法,只需使用contains元素定位它,并在激活时覆盖样式。在这种情况下,您可以向li
添加一个类(您可以在className
本身使用Link
,但它不在该点旁边。
<li key={key} className="your-class">
<Link to={value.to} activeClassName="__link-active">
<FormattedMessage {...value.msg} />
</Link>
</li>
.your-class a {
// inactive styles here
}
.your-class a.__link-active {
// override them here
}
答案 3 :(得分:0)
像这样写:
<ul className={styles.desktopLinks}>
{this.products.map((value, key) => {
let isActive = this.props.location.pathname.indexOf(value.to) > -1 ? true : false;
return (
<li key={key}>
<Link to={value.to} activeClassName={isActive ? "__link-active" : "">
<FormattedMessage {...value.msg} />
</Link>
</li>
);
})}
</ul>
或者代替this.props.location.pathname
,您也可以使用window.location.hash
。
答案 4 :(得分:0)
尝试创建一个名为.nav-link的类,然后在其中放置原始(也称为非活动链接)样式。