当前位置:首页 > React

react 侧边栏路由实现

2026-01-27 11:38:16React

使用 React Router 实现侧边栏路由

安装 React Router 依赖包

npm install react-router-dom

创建基础路由结构

import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';

function App() {
  return (
    <Router>
      <div className="app">
        <Sidebar />
        <Routes>
          <Route path="/dashboard" element={<Dashboard />} />
          <Route path="/settings" element={<Settings />} />
          <Route path="/profile" element={<Profile />} />
        </Routes>
      </div>
    </Router>
  );
}

创建可折叠侧边栏组件

侧边栏基础结构

import { Link } from 'react-router-dom';
import { useState } from 'react';

function Sidebar() {
  const [isCollapsed, setIsCollapsed] = useState(false);

  return (
    <div className={`sidebar ${isCollapsed ? 'collapsed' : ''}`}>
      <button onClick={() => setIsCollapsed(!isCollapsed)}>
        {isCollapsed ? '>' : '<'}
      </button>
      <nav>
        <ul>
          <li>
            <Link to="/dashboard">Dashboard</Link>
          </li>
          <li>
            <Link to="/settings">Settings</Link>
          </li>
          <li>
            <Link to="/profile">Profile</Link>
          </li>
        </ul>
      </nav>
    </div>
  );
}

添加嵌套路由支持

配置嵌套路由结构

react 侧边栏路由实现

function App() {
  return (
    <Router>
      <div className="app">
        <Sidebar />
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/user/*" element={<UserLayout />} />
        </Routes>
      </div>
    </Router>
  );
}

function UserLayout() {
  return (
    <div className="user-layout">
      <Routes>
        <Route path="profile" element={<Profile />} />
        <Route path="settings" element={<Settings />} />
      </Routes>
    </div>
  );
}

实现动态高亮当前路由

使用 NavLink 实现自动高亮

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

function Sidebar() {
  return (
    <div className="sidebar">
      <nav>
        <ul>
          <li>
            <NavLink 
              to="/dashboard"
              className={({ isActive }) => isActive ? 'active' : ''}
            >
              Dashboard
            </NavLink>
          </li>
        </ul>
      </nav>
    </div>
  );
}

响应式侧边栏实现

添加媒体查询和状态控制

react 侧边栏路由实现

function Sidebar() {
  const [isMobileOpen, setIsMobileOpen] = useState(false);

  return (
    <>
      <button 
        className="mobile-toggle"
        onClick={() => setIsMobileOpen(!isMobileOpen)}
      >
        Menu
      </button>
      <div className={`sidebar ${isMobileOpen ? 'open' : ''}`}>
        {/* 侧边栏内容 */}
      </div>
    </>
  );
}

配套 CSS 示例

.sidebar {
  width: 250px;
  transition: width 0.3s;
}

.sidebar.collapsed {
  width: 60px;
}

@media (max-width: 768px) {
  .sidebar {
    position: fixed;
    left: -250px;
  }
  .sidebar.open {
    left: 0;
  }
}

使用图标库增强侧边栏

安装图标库

npm install react-icons

集成图标到侧边栏

import { FaHome, FaCog, FaUser } from 'react-icons/fa';

function Sidebar() {
  return (
    <div className="sidebar">
      <nav>
        <ul>
          <li>
            <NavLink to="/dashboard">
              <FaHome /> Dashboard
            </NavLink>
          </li>
        </ul>
      </nav>
    </div>
  );
}

标签: 侧边路由
分享给朋友:

相关文章

vue路由实现iframe

vue路由实现iframe

在Vue中实现iframe嵌入可以通过路由配置和组件动态加载来完成。以下是具体实现方法: 路由配置 在Vue Router的路由配置中,通过component属性动态加载iframe组件。需要将目标…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

vue实现动态路由

vue实现动态路由

动态路由的实现方式 Vue中实现动态路由通常涉及前端和后端的协作,以下是几种常见的实现方式: 基于用户权限的路由控制 在用户登录后,根据其权限动态生成路由表。使用router.addRoutes方…

vue如何实现路由跳转

vue如何实现路由跳转

Vue 路由跳转的实现方法 Vue 中实现路由跳转主要通过 vue-router 库完成,以下是几种常见的路由跳转方式: 声明式导航(模板中使用 <router-link>) <…

vue实现滑动切换路由

vue实现滑动切换路由

vue实现滑动切换路由的方法 使用vue-router和touch事件监听 在Vue项目中结合vue-router和移动端touch事件可以实现滑动切换路由效果。需要监听touchstart、touc…

vue里面动态路由实现

vue里面动态路由实现

动态路由实现方法 在Vue中实现动态路由通常涉及两种场景:基于用户权限的动态路由和基于参数的路由匹配。以下是具体实现方式: 基于用户权限的动态路由 定义静态路由与动态路由 静态路由为无需权限的公共…