前端
PythonJava运维数据库
React-Router(v6)
React-Router(v6)
  • Routers
    • createBrowserRouter
    • createHashRouter
    • createMemoryRouter
    • createStaticHandler
    • createStaticRouter
    • RouterProvider
    • StaticRouterProvider
  • Router 组件
    • BrowserRouter
    • HashRouter
    • MemoryRouter
    • NativeRouter
    • Router
    • StaticRouter
  • Route
    • Route
    • action
    • errorElement
    • hydrateFallbackElement
    • lazy
    • loader
    • shouldRevalidate
  • 组件
    • Await
    • Form
    • Link
    • Link(RN)
    • NavLink
    • Navigate
    • Outlet
    • Route
    • Routes
    • ScrollRestoration
  • 钩子函数
    • useActionData
    • useAsyncError
    • useAsyncValue
    • useBeforeUnload
    • useBlocker
    • useFetcher
    • useFetchers
    • useFormAction
    • useHref
    • useinRouterContext
    • useLinkcLickHandler
    • useLinkPressHandler
    • useLoaderData
    • useLocation
    • useMatch
    • useMatches
    • useNavigate
    • useNavigation
    • useNavigationType
    • useOutlet
    • useOutletContext
    • useParams
    • unstable_usePrompt
    • useResolvedPath
    • useRevalidator
    • useRouteError
    • useRouteLoaderData
    • useRoutes
    • useSearchParams
    • useSearchParams (RN)
    • useSubmit
    • unstable_useViewTransitionState
  • Utilities
    • Fetch 工具类
      • json
      • redirect
      • redirectDocument
      • replace
    • 其他工具类
      • createRoutesFromChildren
      • createRoutesFromElements
      • createSearchParams
      • defer
      • generatePath
      • isRouteErrorResponse
      • Location
      • matchPath
      • matchRoutes
      • renderMatches
      • resolvePath
  • 🥇Routers
    • Router
    • Route 配置
      • lazy
      • action
      • shouldRevalidate
      • loader
由 GitBook 提供支持
在本页
  • 默认active类名
  • className
  • style
  • children
  • end
  • caseSensitive
  • aria-current

这有帮助吗?

  1. 组件

NavLink

上一页Link(RN)下一页Navigate

最后更新于2年前

这有帮助吗?

<NavLink>是一种特殊的<Link>,它知道自己是否处于“活动”或“挂起”状态。

import { NavLink } from "react-router-dom"
<NavLink to="/messages" className={({isActive, isPending}) => isPending ? "pending" : isActive ? "active" : ""}>
  Messages
</NavLink>

默认active类名

默认情况下,当一个<NavLink>组件处于活动状态时,会添加一个active类。

className

className 属性的作用类似于普通的className,但你还可以传递一个函数来自定义应用于链接的类名,基于链接的活动状态和挂起状态。

<NavLink
  to="/messages"
  className={({ isActive, isPending }) =>
    isPending ? "pending" : isActive ? "active" : ""
  }
>
  Messages
</NavLink>

style

style 属性的作用类似于普通的样式属性,还可以通过传递一个函数来自定义样式,基于链接的活动状态和挂起状态。

<NavLink
  to="/messages"
  style={({ isActive, isPending }) => {
    return {
      fontWeight: isActive ? "bold" : "",
      color: isPending ? "red" : "black",
    };
  }}
>
  Messages
</NavLink>

children

render props 作为子项传递,根据活动和挂起状态自定义内容。

<NavLink to="/tasks">
  {({ isActive, isPending }) => (
    <span className={isActive ? "active" : ""}>Tasks</span>
  )}
</NavLink>

end

end 属性更改了匹配逻辑,使得active和pending状态,只要匹配到NavLink的to路径的结尾。如果URL长度超过to,则不再被视为活动状态。

Link
URL
isActive

<NavLink to="/tasks" />

/tasks

true

<NavLink to="/tasks" />

/tasks/123

true

<NavLink to="/tasks" end/>

/tasks

true

<NavLink to="/tasks" end/>

/tasks/123

false

caseSensitive

添加caseSensitive属性会改变匹配逻辑,使其区分大小写。

aria-current

当NavLink处于活动状态时,它会自动应用于底层锚点标记 <a aria-current="page">

Drawing