mcpField
S
syncfusion-react-menu

syncfusion-react-menu

github.com/syncfusion设计与 UI3623 次安装1 周前更新
代码仓库

关于 syncfusion-react-menu

面向 React 开发者的 Syncfusion Menu 组件实现指南,用于构建层级导航与菜单界面。指南涵盖数据绑定、响应式汉堡模式、菜单项管理、事件、键盘操作和无障碍功能。

主要功能

  1. 01多层级菜单结构
  2. 02层级与自引用数据绑定
  3. 03汉堡模式和滚动布局
  4. 04菜单项动态增删与状态控制
  5. 05事件处理和动画设置
  6. 06键盘导航与 RTL 支持

适用场景

  1. 01构建应用主导航
  2. 02制作移动端汉堡菜单
  3. 03创建文件或操作下拉菜单
  4. 04从 JSON 数据生成层级菜单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/react-ui-components-skills --skill syncfusion-react-menu

安装后在 Claude Code 中输入/syncfusion-react-menu确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
accessibility.md
data-binding.md
events-and-callbacks.md
events-and-interactions.md
getting-started.md
hamburger-mode.md
menu-items-customization.md
methods-api.md
orientation-and-layout.md
properties-and-configuration.md
styling-and-appearance.md
use-case-scenarios.md

详细介绍

实现 Syncfusion React Menu 组件

Syncfusion React Menu 组件是一种灵活且功能丰富的导航控件,可用于创建分层菜单结构,并支持图标、分隔符、动画、无障碍功能、汉堡模式、滚动、事件处理和项目状态管理。可用它构建导航栏、下拉菜单、上下文菜单、移动端自适应菜单和复杂的分层导航系统。

何时使用此技能

  • 构建导航菜单: 文件菜单、应用程序菜单、主导航栏
  • 下拉菜单: 用户操作菜单、上下文相关选项
  • 子菜单系统: 多级分层导航
  • 汉堡菜单/移动端菜单: 适用于移动设备的自适应菜单
  • 菜单自定义: 添加/移除项目、图标、分隔符、自定义样式
  • 事件处理: 检测菜单项目点击、打开/关闭事件、项目状态变更
  • 数据驱动菜单: 将菜单绑定到 JSON 数据结构(分层或自引用)
  • 项目状态管理: 启用/禁用、显示/隐藏、更新菜单项目
  • 无障碍功能: 创建支持键盘导航、便于屏幕阅读器使用的菜单
  • RTL 支持: 从右向左书写语言的菜单
  • 可滚动菜单: 支持水平/垂直滚动的大型菜单
  • 状态持久化: 在页面重新加载后保存菜单状态

组件概述

主要功能
  • 分层菜单,支持无限嵌套层级
  • 数据绑定,支持分层或自引用 JSON 数据
  • 支持图标和分隔符,方便进行视觉组织
  • 事件系统,支持点击、打开、关闭和渲染交互
  • 动画效果,可配置时间和缓动方式
  • 键盘导航和符合 WCAG 的无障碍功能
  • RTL 支持,适用于从右向左书写的语言
  • 自适应布局,支持水平和垂直滚动
  • 项目状态管理——动态添加、移除、启用/禁用、显示/隐藏项目
  • 汉堡模式,适用于移动端自适应菜单
  • 状态持久化——在页面重新加载后保存并恢复菜单状态
  • HTML 清理,增强安全性
  • 悬停延迟控制子菜单的显示时机
  • 自定义 CSS 类,实现灵活的样式设置
何时选择 Menu 而非其他组件
组件适用场景
Menu分层导航、下拉菜单、文件菜单、汉堡菜单
Navbar线性顶部导航
Sidebar固定侧边导航面板
Tabs可切换的平面内容区块

快速开始

import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import React from 'react';

function App() {
  const menuItems: MenuItemModel[] = [
    {
      text: 'File',
      items: [
        { text: 'New' },
        { text: 'Open' },
        { text: 'Save' }
      ]
    },
    {
      text: 'Edit',
      items: [
        { text: 'Cut' },
        { text: 'Copy' },
        { text: 'Paste' }
      ]
    }
  ];

  return (
    <MenuComponent items={menuItems}></MenuComponent>
  );
}

export default App;

文档与导航指南

入门

📄 阅读: references/getting-started.md

  • 使用 Vite/Create React App 安装并设置软件包
  • CSS 导入和主题配置
  • 使用 MenuItemModel 创建基本菜单
  • 在 React 中集成 MenuComponent
  • 首次渲染和初始化
  • 涟漪效果
  • 何时阅读: 开始新的 Menu 实现、设置项目时
属性和配置

📄 阅读: references/properties-and-configuration.md

  • MenuComponent 的所有属性及其说明
  • 默认值和接受的类型
  • 每个属性的配置示例
  • animationSettings、cssClass、enableHtmlSanitizer、enablePersistence
  • enableRtl、enableScrolling、hamburgerMode、hoverDelay
  • locale、orientation、showItemOnClick、target、title
  • 何时阅读: 配置组件行为、设置动画、启用功能时
方法和 API

📄 阅读: references/methods-api.md

  • 所有 MenuComponent 方法的详细文档
  • insertBefore()、insertAfter()、removeItems() —— 操作菜单项
  • enableItems()、hideItems()、showItems() —— 管理菜单项状态
  • getItemIndex()、setItem() —— 访问和更新菜单项
  • open()、close() —— 控制汉堡菜单模式
  • destroy() —— 清理
  • 每个方法的完整代码示例
  • 何时阅读: 动态操作菜单项、控制菜单状态
事件和回调

📄 阅读: references/events-and-callbacks.md

  • 所有事件类型的完整文档
  • 事件参数:MenuEventArgs、BeforeOpenCloseMenuEventArgs、OpenCloseMenuEventArgs
  • select、beforeOpen、beforeClose、onOpen、onClose 事件
  • beforeItemRender 和 created 生命周期事件
  • 事件处理模式和回调示例
  • 何时阅读: 响应用户交互、处理生命周期事件
数据绑定

📄 阅读: references/data-binding.md

  • 层级数据绑定
  • 自引用数据结构
  • 使用 FieldSettingsModel 映射 JSON 数据
  • 复杂的嵌套数据层级
  • 动态数据更新和修改
  • 来自 API 的实时数据
  • 何时阅读: 使用数据源填充菜单
菜单项自定义

📄 阅读: references/menu-items-customization.md

  • 使用 insertBefore/insertAfter 添加菜单项
  • 使用 removeItems 删除菜单项
  • 使用 enableItems 启用/禁用菜单项
  • 使用 showItems/hideItems 显示/隐藏菜单项
  • 自定义 HTML 属性
  • 支持分隔符
  • 何时阅读: 动态管理菜单结构
样式和外观

📄 阅读: references/styling-and-appearance.md

  • 图标集成和定位
  • 分隔符的呈现和自定义
  • 创建助记符 UI(键盘快捷键)
  • RTL(从右向左)支持
  • 自定义 CSS 类和主题集成
  • 动画设置和效果
  • 深色模式支持
  • 何时阅读: 自定义外观、设置主题
汉堡菜单和移动模式

📄 阅读: references/hamburger-mode.md

  • 汉堡菜单模式的设置和配置
  • 移动端响应式实现
  • hamburgerMode、target、title 属性
  • open() 和 close() 方法
  • 与 Sidebar 和 Accordion 集成
  • 移动端优先设计模式
  • 何时阅读: 构建适配移动端的菜单
使用场景

📄 阅读: references/use-case-scenarios.md

  • 可滚动菜单实现
  • 与 Toolbar 集成的菜单
  • 带 Sidebar 的汉堡菜单
  • 使用 ListView 的移动视图
  • 上下文菜单模式
  • 数据驱动的动态菜单
  • 何时阅读: 为实际场景构建特定的菜单模式
无障碍

📄 阅读: references/accessibility.md

  • WCAG 合规标准
  • WAI-ARIA 属性
  • 键盘导航模式
  • 屏幕阅读器支持
  • 焦点管理
  • 色彩对比度指南
  • 无障碍测试
  • 何时阅读: 确保所有用户都能无障碍地使用菜单

快速入门示例

import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import * as React from 'react';

function App() {
  // Define menu structure
  const menuItems: MenuItemModel[] = [
    {
      text: 'File',
      items: [
        { text: 'New' },
        { text: 'Open' },
        { text: 'Save' },
        { separator: true },
        { text: 'Exit' }
      ]
    },
    {
      text: 'Edit',
      items: [
        { text: 'Cut' },
        { text: 'Copy' },
        { text: 'Paste' }
      ]
    },
    {
      text: 'Help'
    }
  ];

  return (
    <MenuComponent items={menuItems}></MenuComponent>
  );
}

export default App;

关键属性参考

属性类型默认值用途
itemsMenuItemModel[][]要渲染的菜单项
fieldsFieldSettingsModel-数据字段映射
hamburgerModebooleanfalse启用移动端汉堡菜单视图
enableScrollingbooleantrue允许滚动查看较大的菜单
enablePersistencebooleanfalse跨会话保存状态
enableRtlbooleanfalse支持从右向左排列的文本
orientationOrientationHorizontal布局方向
animationSettingsMenuAnimationSettings-动画配置
hoverDelaynumber400子菜单悬停延迟(毫秒)
showItemOnClickbooleanfalse仅在点击时显示菜单项
enableHtmlSanitizerbooleantrue清理 HTML 内容
cssClassstring-自定义 CSS 类
localestring'en-US'区域设置/语言设置
targetstring-汉堡菜单的元素选择器
titlestring-汉堡菜单模式的标题文本

关键方法参考

方法参数用途
insertBefore()item, selector在指定菜单项之前插入菜单项
insertAfter()item, selector在指定菜单项之后插入菜单项
removeItems()selectors按选择器移除菜单项
enableItems()selectors, enable启用/禁用菜单项
showItems()selectors显示隐藏的菜单项
hideItems()selectors隐藏可见的菜单项
setItem()item, selector更新菜单项属性
getItemIndex()selector获取菜单项在菜单中的索引
open()-打开汉堡菜单
close()-关闭汉堡菜单
destroy()-清理组件

关键事件参考

事件触发条件参数类型
select点击菜单项MenuEventArgs
beforeOpen子菜单打开之前BeforeOpenCloseMenuEventArgs
beforeClose子菜单关闭之前BeforeOpenCloseMenuEventArgs
onOpen子菜单打开之后OpenCloseMenuEventArgs
onClose子菜单关闭之后OpenCloseMenuEventArgs
beforeItemRender菜单项渲染之前BeforeItemRenderEventArgs
created组件初始化时Object

常见模式

模式 1:响应菜单项选择
const handleMenuSelect = (args) => {
  console.log(`Selected: ${args.item.text}`);
  // Handle the selected menu item
};

<MenuComponent 
  items={menuItems} 
  select={handleMenuSelect}
></MenuComponent>
模式 2:动态添加菜单项
let menuObj: MenuComponent;

const addMenuItem = () => {
  menuObj.insertAfter([{ text: 'New Item' }], 'File');
};

<MenuComponent 
  ref={(menu) => (menuObj = menu)} 
  items={menuItems}
></MenuComponent>
模式 3:禁用菜单项
const handleBeforeOpen = (args) => {
  if (args.item.text === 'Save') {
    args.item.disabled = true; // Disable based on condition
  }
};

<MenuComponent 
  items={menuItems} 
  beforeOpen={handleBeforeOpen}
></MenuComponent>

关键学习路径

  1. 从这里开始: references/getting-started.md - 设置和创建基本菜单
  2. 添加数据: references/data-binding.md - 将菜单绑定到数据源
  3. 处理交互: references/events-and-callbacks.md - 响应用户操作
  4. 动态控制: references/methods-api.md - 以编程方式操作菜单
  5. 高级功能: references/hamburger-mode.md - 移动端响应式模式
  6. 实际应用模式: references/use-case-scenarios.md - 生产环境中的实现

所有参考文件

基础知识
数据与状态
交互与控制
演示与用户体验
旧版(原始文件)
实际应用实现
  • use-case-scenarios.md - 8 种完整模式:文件菜单、工具栏、侧边栏、仪表板、移动应用等

相关技能

评论

支持 Markdown