导航
本页内容

导航

介绍

用户可以使用 <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;
}

它还在 classNamestylechildren 上提供回调 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>
  );
}

useNavigate

此 hook 允许程序员在用户不进行交互的情况下导航到新页面。

对于普通导航,最好使用 LinkNavLink。它们提供了更好的默认用户体验,例如键盘事件、辅助功能标签、"在新窗口打开"、右键菜单等。

仅在用户没有进行交互但你需要导航的情况下使用 useNavigate,例如

  • 表单提交完成后
  • 因不活动而自动登出
  • 限时 UI,例如测验等
import { useNavigate } from "react-router";

export function LoginPage() {
  let navigate = useNavigate();

  return (
    <>
      <MyHeader />
      <MyLoginForm
        onSuccess={() => {
          navigate("/dashboard");
        }}
      />
      <MyFooter />
    </>
  );
}

下一篇:URL 值

文档和示例 CC 4.0