我有一个关于页面("/about"
),其中包括一个联系表单。我用一个ID链接了该表单(例如contact-form)。我有一个带有以下链接的导航栏:“Home”、“About”、“Contact”。我为活动路线设置了一些基本样式:
import { NavLink } from 'react-router-dom';
export default function Nav() {
let activeStyle = {
textDecoration: "underline",
};
return(
<nav>
<ul>
<li>
<NavLink to="/" style={({isActive}) => isActive ? activeStyle :
undefined}>
Home
</NavLink>
</li>
<li>
<NavLink to="/about" style={({isActive}) => isActive ? activeStyle :
undefined}>
About
</NavLink>
</li>
<li>
<NavLink to="/about#contact" style={({isActive}) => isActive ? activeStyle :
undefined}>
Contact
</NavLink>
</li>
</ul>
</nav>
);
}
当我单击“关于”或“联系人”时,两个路由器都处于活动状态,但这不是所需的行为。我如何区分这两个路由器?我希望一次有一个路由器处于活动状态。
1条答案
按热度按时间a0zr77ik1#
这肯定不是任何支持开箱即用的东西。请参阅此Github issue关于"NavLink在哈希链接上不活动"的内容。
一位核心维护者回应:
我们不支持哈希链接。这是因为HashRouter和需要支持基于哈希的历史记录。
要解决这个问题,您可以添加一些React状态来管理"散列",并将其添加到活动匹配中。
示例:
要点是根据单击的链接设置/清除
hash
状态,并使用hash
状态匹配链接的目标路径字符串的哈希值。第一节第一节第一节第二节第一节