用户可以使用 <Link>
、<NavLink>
和 useNavigate
在你的应用程序中导航。
此组件用于需要渲染活动状态的导航链接。
import { NavLink } from "react-router";
export function MyAppNav() {
return (
<nav>
<NavLink to="/" end>
Home
</NavLink>
<NavLink to="/trending" end>
Trending Concerts
</NavLink>
<NavLink to="/concerts">All Concerts</NavLink>
<NavLink to="/account">Account</NavLink>
</nav>
);
}
每当 NavLink
处于活动状态时,它将自动拥有一个 .active
类名,以便于使用 CSS 进行样式设置
a.active {
color: red;
}
它还在 className
、style
和 children
上具有回调属性,其中包含活动状态,用于内联样式或条件渲染
// className
<NavLink
to="/messages"
className={({ isActive }) =>
isActive ? "text-red-500" : "text-black"
}
>
Messages
</NavLink>
// style
<NavLink
to="/messages"
style={({ isActive }) => ({
color: isActive ? "red" : "black",
})}
>
Messages
</NavLink>
// children
<NavLink to="/message">
{({ isActive }) => (
<span className={isActive ? "active" : ""}>
{isActive ? "👉" : ""} Tasks
</span>
)}
</NavLink>
当链接不需要活动样式时,请使用 <Link>
import { Link } from "react-router";
export function LoggedOutMessage() {
return (
<p>
You've been logged out.{" "}
<Link to="/login">Login again</Link>
</p>
);
}
此 Hook 允许程序员在无需用户交互的情况下将用户导航到新页面。
对于正常导航,最好使用 Link
或 NavLink
。 它们提供了更好的默认用户体验,例如键盘事件、辅助功能标签、“在新窗口中打开”、右键单击上下文菜单等。
将 useNavigate
的使用保留在用户不交互但你需要导航的情况下,例如
import { useNavigate } from "react-router";
export function LoginPage() {
let navigate = useNavigate();
return (
<>
<MyHeader />
<MyLoginForm
onSuccess={() => {
navigate("/dashboard");
}}
/>
<MyFooter />
</>
);
}