react router

25 年 9 月 5 日 星期五
308 字
2 分钟

NavLink vs. Link

好 👌,这个问题在 React Router v6 里特别常见。


1. 共同点

  • LinkNavLink 都是 React Router 提供的导航组件

  • 作用类似于 HTML 的 <a href="...">,但不会整页刷新,而是执行单页应用 (SPA) 的路由切换。

  • 都通过 to 指定跳转地址:

    jsx
    <Link to="/about">About</Link>
    <NavLink to="/about">About</NavLink>

2. 不同点

  • 只是一个普通的路由跳转
  • 用于单纯的导航,不会关心当前路由是否匹配。

例子:

jsx
<Link to="/home">Home</Link>

  • Link 的增强版,用于 导航菜单
  • 它可以检测当前路由是否与 to 匹配,然后自动添加 状态样式
  • 常见场景:高亮显示当前选中的菜单项。

例子:

jsx
<NavLink to="/home" className={({ isActive }) => (isActive ? 'active' : 'inactive')}>
  Home
</NavLink>

这里的 isActive 是 React Router 传入的参数:

  • 当前路径匹配 /homeisActive = true,className = "active"
  • 不匹配 → "inactive"

3. 总结对比表

特性LinkNavLink
路由跳转
检查当前路由是否激活
支持自动添加 active 状态
适合场景普通跳转导航菜单 / 需要高亮的链接

一句话总结

  • Link:只是跳转。
  • NavLink:还能知道自己是不是“当前页面”,常用于导航栏高亮

文章标题:react router

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/react_router[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。