用户可以使用 <Link>
, <NavLink>
和 useNavigate
在应用中导航。
此组件用于需要渲染活动(active)状态的导航链接。
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 类名,以便使用 CSS 轻松进行样式设置
a.active {
color: red;
}
它还在 className
、style
和 children
上提供回调 props,其中包含活动状态,用于内联样式或条件渲染
// 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 />
</>
);
}
下一篇:URL 值