当前位置:首页 > React

react实现左侧菜单

2026-01-26 17:55:36React

实现左侧菜单的基本结构

使用 React 和 CSS 实现一个简单的左侧菜单,需要创建一个可折叠的侧边栏组件。以下是一个基础实现方案:

代码示例:

import React, { useState } from 'react';
import './Sidebar.css';

const Sidebar = () => {
  const [isOpen, setIsOpen] = useState(true);

  return (
    <div className={`sidebar ${isOpen ? 'open' : 'closed'}`}>
      <button onClick={() => setIsOpen(!isOpen)}>
        {isOpen ? 'Close' : 'Open'}
      </button>
      <ul>
        <li>Menu Item 1</li>
        <li>Menu Item 2</li>
        <li>Menu Item 3</li>
      </ul>
    </div>
  );
};

export default Sidebar;

CSS 样式:

.sidebar {
  width: 250px;
  height: 100vh;
  background-color: #f4f4f4;
  transition: width 0.3s ease;
}

.sidebar.closed {
  width: 50px;
}

.sidebar ul {
  list-style: none;
  padding: 0;
}

.sidebar li {
  padding: 10px;
  cursor: pointer;
}

.sidebar li:hover {
  background-color: #ddd;
}

使用 React Router 实现导航

如果菜单需要跳转页面,可以结合 react-router-dom 实现路由功能。

代码示例:

react实现左侧菜单

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

const Sidebar = () => {
  return (
    <div className="sidebar">
      <ul>
        <li><Link to="/home">Home</Link></li>
        <li><Link to="/about">About</Link></li>
        <li><Link to="/contact">Contact</Link></li>
      </ul>
    </div>
  );
};

动态生成菜单项

通过数据驱动的方式生成菜单项,便于维护和扩展。

代码示例:

const menuItems = [
  { id: 1, name: 'Home', path: '/home' },
  { id: 2, name: 'About', path: '/about' },
  { id: 3, name: 'Contact', path: '/contact' },
];

const Sidebar = () => {
  return (
    <div className="sidebar">
      <ul>
        {menuItems.map(item => (
          <li key={item.id}>
            <Link to={item.path}>{item.name}</Link>
          </li>
        ))}
      </ul>
    </div>
  );
};

添加图标和动画效果

使用图标库(如 react-icons)和 CSS 动画增强用户体验。

react实现左侧菜单

代码示例:

import { FaHome, FaInfoCircle, FaEnvelope } from 'react-icons/fa';

const Sidebar = () => {
  return (
    <div className="sidebar">
      <ul>
        <li><FaHome /> Home</li>
        <li><FaInfoCircle /> About</li>
        <li><FaEnvelope /> Contact</li>
      </ul>
    </div>
  );
};

CSS 动画:

.sidebar li {
  transition: transform 0.2s ease;
}

.sidebar li:hover {
  transform: translateX(5px);
}

响应式设计适配移动端

通过媒体查询调整菜单在小屏幕设备上的显示方式。

CSS 示例:

@media (max-width: 768px) {
  .sidebar {
    width: 100%;
    height: auto;
  }

  .sidebar ul {
    display: flex;
    justify-content: space-around;
  }
}

以上方案涵盖了基础实现、路由集成、动态菜单、图标优化和响应式设计,可根据实际需求调整。

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

相关文章

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。 /…

react就业如何

react就业如何

React 就业市场现状 React 作为当前主流前端框架之一,就业需求持续旺盛。国内外互联网企业、中大型公司以及初创团队普遍采用 React 技术栈,尤其在 Web 应用、移动端(React Nat…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 数据绑定与状态管理 在 Vue 中实现左右菜单联动,核心是通过共享状态或事件通信实现数据同步。可以通过 Vuex 或组件间的 props/emit 机制管理联动状态。 //…

react如何减少伤病

react如何减少伤病

减少React应用中的性能问题(避免"伤病") 优化React应用性能需要从组件渲染、状态管理和外部依赖等多方面入手。以下是关键优化策略: 使用React.memo进行组件记忆 对函数组件使用Rea…