民间!如果我的gatsby Link处于活动状态,我想更改内部的样式。我想通过display: none
隐藏/显示子菜单。但是不知道如何将参数从Link传递到其他地方。有什么想法吗?非常感谢
我试图获得或通过此页面Reach Link上的状态,但也没有运气
return (
<li key={`sidebar-id${i}`}>
<Link to={item.path} activeStyle={{ color: "red" }} partiallyActive={true}>
{item.name}
</Link>
<ul className={`${styles.menu__secondLevel} small-body-text`} style={ifLinkisActive}>
{subItems}
</ul>
</li>
);
这是补充工具栏项目的完整代码:
const SidebarItems = routes.map((item, i) => {
// If Sidebar has sub items
if (item.items) {
// Loop trough sub items
const subItems = item.items.map((subItem, j) => {
return (
<li key={`sidebar-id${j}`}>
<Link to={subItem.path}>{subItem.name}</Link>
</li>
);
});
// Main menu with "subItems" variable
return (
<li key={`sidebar-id${i}`}>
<Link
to={item.path}
activeStyle={{ color: "red" }}
partiallyActive={true}
>
{item.name}
</Link>
<ul className={`${styles.menu__secondLevel} small-body-text`}>
{subItems}
</ul>
</li>
);
// If doesn't have
} else {
return (
<li key={`sidebar-id${i}`}>
<Link to={item.path} activeStyle={{ color: "red" }}>
{item.name}
</Link>
</li>
);
}
});
答案 0 :(得分:1)
我认为您可以使用CSS解决此问题。盖茨比的Link
有一个activeClassName
道具,可以将一个类附加到活动链接。您可以使用CSS +
选择器为同级ul
设置样式。
a.active {
color: red;
}
.active + .submenu {
display: block;
}
.submenu {
display: none;
}
<a class="active" href="#">Active</a>
<ul class="submenu">
<li>Submenu</li>
</ul>
这是一个具有到达路由器链接的codesandbox,但进行了一些自定义以匹配Gatsby Link的道具。