用户使用<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
上具有回调 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 />
</>
);
}