当前位置:首页 > React

react 导航active实现

2026-01-26 20:43:58React

实现 React 导航 Active 状态的方法

使用 React Router 的 NavLink 组件
React Router 提供了 NavLink 组件,可以自动为当前匹配的路由添加 active 类名。通过 activeClassNameclassName 函数自定义样式:

import { NavLink } from 'react-router-dom';

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

手动判断路径匹配
通过 useLocation 获取当前路径,与导航项的路径比较后动态添加类名:

react 导航active实现

import { Link, useLocation } from 'react-router-dom';

const location = useLocation();
<Link 
  to="/about" 
  className={location.pathname === '/about' ? 'active' : ''}
>
  About
</Link>

使用 CSS Modules 或 Styled Components
结合 CSS Modules 或样式库实现高亮效果:

react 导航active实现

// CSS Modules
import styles from './Nav.module.css';
<NavLink to="/contact" className={({ isActive }) => isActive ? styles.active : ''} />

// Styled Components
const StyledLink = styled(NavLink)`
  &.active { color: red; }
`;

自定义 Hook 封装逻辑
抽象 active 判断逻辑为可复用的 Hook:

const useActivePath = (path) => {
  const location = useLocation();
  return location.pathname === path;
};

const isActive = useActivePath('/products');
<Link to="/products" className={isActive ? 'active' : ''} />

注意事项

  • 精确匹配需配置 end 属性:<NavLink to="/" end>
  • 嵌套路由需处理路径前缀匹配逻辑
  • 动态路由需使用 pathname.startsWith() 等方法判断

标签: reactactive
分享给朋友:

相关文章

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…