当前位置:首页 > React

react左侧菜单实现

2026-01-27 04:22:07React

实现 React 左侧菜单的步骤

使用 React 和常见 UI 库(如 Ant Design 或 Material-UI)可以快速实现左侧菜单功能。以下是两种主流实现方式:

使用 Ant Design 的 Menu 组件

安装 Ant Design:

npm install antd

引入 Menu 组件和样式:

import { Menu } from 'antd';
import 'antd/dist/antd.css';

基本菜单结构示例:

react左侧菜单实现

const items = [
  { label: '首页', key: 'home' },
  { label: '产品', key: 'products', children: [
    { label: '列表', key: 'product-list' },
    { label: '分类', key: 'categories' }
  ]},
  { label: '用户管理', key: 'users' }
];

function App() {
  return (
    <div style={{ width: 256 }}>
      <Menu 
        mode="inline"
        items={items}
        defaultSelectedKeys={['home']}
      />
    </div>
  );
}

使用 Material-UI 的 Drawer 组件

安装 Material-UI:

npm install @mui/material @emotion/react @emotion/styled

实现可折叠抽屉式菜单:

import { Drawer, List, ListItem, ListItemText } from '@mui/material';

function App() {
  return (
    <Drawer variant="permanent" anchor="left">
      <List>
        <ListItem button>
          <ListItemText primary="首页" />
        </ListItem>
        <ListItem button>
          <ListItemText primary="仪表盘" />
        </ListItem>
      </List>
    </Drawer>
  );
}

自定义实现方案

对于需要完全自定义的场景,可以手动构建:

react左侧菜单实现

import { useState } from 'react';

function SideMenu() {
  const [activeItem, setActiveItem] = useState('home');

  const menuItems = [
    { id: 'home', label: '主页' },
    { id: 'settings', label: '设置' }
  ];

  return (
    <div className="side-menu">
      {menuItems.map(item => (
        <div 
          key={item.id}
          className={`menu-item ${activeItem === item.id ? 'active' : ''}`}
          onClick={() => setActiveItem(item.id)}
        >
          {item.label}
        </div>
      ))}
    </div>
  );
}

配套 CSS 示例:

.side-menu {
  width: 200px;
  background: #f0f0f0;
}
.menu-item {
  padding: 12px;
  cursor: pointer;
}
.menu-item.active {
  background: #1890ff;
  color: white;
}

功能扩展建议

  • 添加路由功能(react-router-dom):
    
    import { Link } from 'react-router-dom';

// 在菜单项中替换为 <Link to={/${item.key}}>{item.label}


- 实现多级嵌套菜单时需要管理展开状态:
```jsx
const [openKeys, setOpenKeys] = useState([]);

<Menu
  openKeys={openKeys}
  onOpenChange={keys => setOpenKeys(keys)}
/>
  • 响应式处理可使用媒体查询或监听窗口大小变化:
    
    const [collapsed, setCollapsed] = useState(false);

// 在移动端时设置 collapsed={true}

标签: 菜单react
分享给朋友:

相关文章

react如何测试

react如何测试

React 测试方法 React 应用的测试通常涉及组件测试、集成测试和端到端测试。以下是常用的测试工具和方法: Jest Jest 是 Facebook 开发的 JavaScript 测试框架,适…

css div 制作导航菜单

css div 制作导航菜单

基本导航菜单结构 使用HTML创建一个简单的导航菜单结构,通常使用<ul>和li>列表实现。每个菜单项用<a>标签包裹以实现链接功能。 <div class="n…

vue实现菜单

vue实现菜单

使用 Vue 实现菜单 Vue 可以轻松实现动态菜单,通常结合路由和组件化思想。以下是一个基于 Vue 3 和 Vue Router 的菜单实现方案: 基础菜单结构 在 Vue 中,菜单通常是一个递…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 在 Vue 中实现菜单功能可以通过多种方式完成,以下是一些常见的方法: 使用 Vue Router 实现路由菜单 通过 Vue Router 可以轻松实现基于路由的菜单导航。…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…