当前位置:首页 > 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中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取日期 在 React 项目中,可以通过 Moment.js 库轻松处理日期和时间。以下是几种常见的日期获取方法。 安装 Moment.js 确保项目中已安装 Momen…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何迭代

react如何迭代

在 React 中迭代数组或对象 React 提供了多种方式来处理数组或对象的迭代,以下是常见的方法: 使用 map 方法迭代数组 map 是 JavaScript 数组的内置方法,常用于在 Rea…

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…

css菜单制作

css菜单制作

CSS 菜单制作方法 水平导航菜单 使用 display: inline-block 或 flexbox 可以轻松创建水平导航菜单。以下是一个基本示例: <nav> <ul c…

react native如何

react native如何

React Native 基础知识 React Native 是一个由 Facebook 开发的框架,用于使用 JavaScript 和 React 构建跨平台移动应用。它允许开发者编写一次代码,同时…