mcpField
S
syncfusion-react-treeview

syncfusion-react-treeview

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

关于 syncfusion-react-treeview

面向 React 开发者的 Syncfusion TreeView 组件指南,用于构建可交互的层级数据界面。涵盖多种数据绑定、节点操作、选择、拖放和无障碍导航,并提供性能与定制模式。

主要功能

  1. 01层级及远程数据绑定
  2. 02节点增删改与拖放
  3. 03多选、复选框和行内编辑
  4. 04筛选、搜索与排序
  5. 05模板、键盘导航和无障碍支持
  6. 06按需加载与状态持久化

适用场景

  1. 01构建文件树或组织结构浏览界面
  2. 02支持节点选择、编辑与重排
  3. 03在大型层级数据中搜索和筛选
  4. 04实现键盘可访问的树形导航

安装

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

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

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

包含的文件

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

references/
advanced-features.md
context-menu-integration.md
customization-styling.md
data-binding.md
drag-drop-and-reordering.md
filtering-and-searching.md
getting-started.md
inline-editing.md
keyboard-and-accessibility.md
node-operations.md
selection-and-checking.md
sorting-and-ordering.md
templates-and-rendering.md

详细介绍

Syncfusion React TreeView — 全面实现指南

掌握 Syncfusion React TreeView 组件,构建功能强大的分层数据界面,并充分利用高级功能、性能优化和企业级能力。

快速入门导航

刚开始使用?
→ 阅读入门指南——安装、设置和第一个 TreeView

需要显示分层数据?
→ 查看数据绑定——所有绑定模式(分层、自引用、远程、按需加载)

正在使用节点模板?
→ 查看模板和渲染——nodeTemplate、statelessTemplates(性能)、drawNode 回调、JSX/HTML 模板

想以编程方式执行节点的 CRUD 操作?
→ 了解节点操作——动态添加、移除、更新、移动和刷新节点

需要复选框或多选?
→ 阅读选择和勾选——单选/多选、复选框、父子同步、三态

正在实现拖放?
→ 查看拖放和重新排序——单节点/多节点拖动、验证、限制

需要允许编辑节点?
→ 查看行内编辑——编辑模式、验证、编辑事件、键盘快捷键

需要筛选或搜索?
→ 了解筛选和搜索——文本筛选、包含父级链、Predicate 查询、动态筛选

想要自定义排序?
→ 查看排序和顺序——全局排序、按层级排序、自定义算法、sortOrder 属性

需要自定义外观?
→ 阅读自定义和样式——CSS、图标、按层级设置样式、整行选择、悬停效果

键盘导航和无障碍?
→ 查看键盘导航和无障碍功能——快捷键、ARIA、屏幕阅读器、符合 WCAG 2.1 标准

需要高级功能?
→ 查看高级功能——按需加载、状态持久化、RTL、本地化、手风琴模式

正在使用上下文菜单?
→ 了解上下文菜单集成——菜单操作、通过菜单管理节点、菜单状态


组件概览

@syncfusion/ej2-react-navigations 中的 TreeViewComponent 是一个多功能的分层数据显示组件,具备企业级功能:

核心能力
能力详情
数据显示分层、自引用、远程(OData/WebAPI)、按需加载
节点操作动态创建、读取、更新和删除(CRUD)节点
选择单选/多选、复选框、三态、自动同步父子节点
编辑支持验证的行内编辑、以编程方式控制编辑
自定义节点模板(包括无状态优化)、自定义图标、按层级设置 CSS 样式
交互拖放(单节点/多节点)、上下文菜单、工具提示、键盘快捷键
性能按需加载、无状态模板、筛选和排序优化
无障碍功能符合 WCAG 2.1 的键盘导航、ARIA 属性、屏幕阅读器支持
国际化RTL 支持、本地化、多语言包
状态管理会话持久化、以编程方式访问节点
主要属性概览
<TreeViewComponent
  // Data
  fields={{ dataSource, id, text, parentID, child, hasChildren, expanded }}
  
  // Selection & Checking
  allowMultiSelection={true}
  showCheckBox={true}
  autoCheck={true}
  checkedNodes={[]}
  selectedNodes={[]}
  
  // Interaction
  allowDragAndDrop={true}
  allowEditing={true}
  
  // Customization
  nodeTemplate={templateFunction}
  statelessTemplates={['nodeTemplate']} // NEW: Performance optimization
  cssClass="custom"
  
  // Display
  allowTextWrap={true}
  fullRowSelect={true}
  
  // Behavior
  loadOnDemand={true}
  expandOn="Click"  // or "DoubleClick" or "None" (accordion)
  sortOrder="Ascending"
  
  // Persistence & Internationalization
  enablePersistence={true}
  enableRtl={false}
  locale="en-US"
  
  // Events
  onNodeSelected={handleSelect}
  onNodeExpanded={handleExpand}
  onNodeDropped={handleDrop}
  // ... many more events
/>

完整功能图谱

1. 数据绑定(5 种方法)
  • ✅ 分层嵌套数组
  • ✅ 自引用(parentID)模型
  • ✅ 远程 OData v4
  • ✅ 远程 Web API
  • ✅ 按需延迟加载
2. 节点操作(11 种方法)
  • ✅ addNodes() - 创建节点
  • ✅ removeNodes() - 删除节点
  • ✅ updateNode() - 修改节点文本
  • ✅ refreshNode() - 从后端刷新
  • ✅ moveNodes() - 移动到其他父节点下
  • ✅ getNode() - 根据元素获取节点
  • ✅ getTreeData() - 获取所有数据
  • ✅ beginEdit()/endEdit() - 以编程方式控制编辑
  • ✅ expandAll()/collapseAll() - 批量操作
  • ✅ selectNodes()/clearSelection() - 控制选择
3. 节点模板(3 种类型)
  • ✅ 字符串模板,支持 ${...} 插值
  • ✅ HTML 元素 ID 引用
  • ✅ JSX 函数组件
  • ✅ statelessTemplates - 性能优化(忽略状态更新)
  • ✅ drawNode 回调 - 自定义渲染的替代方法
4. 选择系统(2 种模式)
  • ✅ 单选
  • ✅ 使用 Ctrl/Shift 键进行多选
  • ✅ 支持三态的复选框模式
  • ✅ 父子节点自动同步(autoCheck)
  • ✅ 独立复选框模式(autoCheck=false)
5. 拖放(2 种范围)
  • ✅ 拖动单个节点
  • ✅ 拖动多个节点(需要 allowMultiSelection)
  • ✅ 拖放验证及指示符(+、-、两节点之间)
  • ✅ 按节点类型限制拖放
  • ✅ 自定义拖动区域(dragArea 属性)
6. 编辑
  • ✅ 行内编辑(双击或按 F2)
  • ✅ 输入验证
  • ✅ 以编程方式编辑(beginEdit/endEdit)
  • ✅ 取消编辑事件
7. 筛选与搜索(高级)
  • ✅ 基于文本筛选
  • ✅ 在结果中包含父节点链
  • ✅ 使用 Predicate 查询 DataManager
  • ✅ 动态更新筛选条件
8. 排序(2 个级别)
  • ✅ 全局排序(升序/降序)
  • ✅ 按层级自定义排序
  • ✅ 集成 DataManager Query
  • ✅ 自定义排序算法
9. 自定义
  • ✅ 按层级设置 CSS 类样式
  • ✅ 自定义展开/折叠图标
  • ✅ 按节点动态设置图标
  • ✅ 整行选择样式
  • ✅ 多行文本换行
  • ✅ 切换图标可见性(悬停效果)
10. 键盘导航(15 个以上快捷键)
  • ✅ 使用方向键导航
  • ✅ 使用 Home/End 定位第一个/最后一个节点
  • ✅ 使用 F2 进行行内编辑
  • ✅ 按 Enter 确认/选择
  • ✅ 按 Escape 取消
  • ✅ 使用 Ctrl+单击进行多选
  • ✅ 使用 Shift+单击进行范围选择
11. 无障碍
  • ✅ 支持 WCAG 2.1 AA 键盘操作
  • ✅ ARIA 属性(角色、属性、状态)
  • ✅ 屏幕阅读器播报
  • ✅ 焦点管理
  • ✅ 语义化 HTML 结构
12. 高级功能
  • ✅ 按需加载与延迟加载
  • ✅ 跨会话状态持久化
  • ✅ RTL(从右到左)支持
  • ✅ 本地化(16 种以上语言)
  • ✅ 手风琴模式(expandOn='None')
  • ✅ 事件取消(可阻止的事件)
  • ✅ 大型数据集的虚拟滚动
13. 集成
  • ✅ 集成上下文菜单
  • ✅ 集成工具栏
  • ✅ 支持工具提示
  • ✅ 通过菜单执行数据操作
14. 事件(19 个事件)
  • ✅ created、dataBound
  • ✅ nodeSelected、nodeSelecting、nodeClicked、nodeDoubleClicked
  • ✅ nodeExpanded、nodeExpanding、nodeCollapsed、nodeCollapsing
  • ✅ nodeEdited、nodeEditing
  • ✅ nodeDragStart、nodeDragging、nodeDragStop、nodeDropped
  • ✅ nodeChecked、nodeChecking
  • ✅ drawNode、keyPress

技能进阶路线

初级(从这里开始)
  1. 快速入门 - 安装、基本组件、层级数据
  2. 数据绑定 - 学习全部 5 种绑定模式
  3. 基本选择 - 单选、onClick 处理
中级
  1. 复选框 - 使用复选框进行多选、父子节点同步
  2. 节点操作 - 动态 CRUD 操作
  3. 行内编辑 - 带验证的文本编辑
  4. 拖放 - 重新排序和移动节点
  5. 模板 - nodeTemplate 基础、JSX 模板
高级
  1. 模板 - 高级 - statelessTemplates 优化、drawNode 回调
  2. 筛选与搜索 - 通过遍历父节点实现复杂筛选
  3. 排序 - 自定义分层排序
  4. 高级功能 - 按需加载缓存、持久化、RTL
  5. 键盘与无障碍 - 符合 WCAG 标准,支持屏幕阅读器
  6. 上下文菜单 - 通过菜单驱动操作
  7. 性能 - 大型数据集的优化策略

文档参考

部分用途适用对象前提条件
入门指南安装、基本设置初学者无
数据绑定5 种绑定模式所有用户React/JSX 基础
模板与渲染新增:完整的模板指南,涵盖 statelessTemplates 和 drawNode中级及以上了解数据绑定
节点操作CRUD 操作中级基本设置
选择与勾选选择模式、复选框中级基本设置
拖放与重新排序拖放功能中级基本设置
内联编辑节点文本编辑中级基本设置
筛选与搜索新增:高级筛选模式高级数据绑定
排序与顺序新增:自定义排序算法高级数据绑定
自定义与样式CSS、图标、外观中级及以上CSS 基础
键盘导航与无障碍新增:键盘快捷键与符合 WCAG 标准高级UI/UX 知识
高级功能新增:按需加载、持久化、RTL、本地化高级中级 TreeView
上下文菜单集成上下文菜单模式高级基本设置

快速示例

import * as React from 'react';
import { TreeViewComponent } from '@syncfusion/ej2-react-navigations';
import '@syncfusion/ej2-react-navigations/styles/tree-view.css';

function App() {
  const hierarchicalData = [
    {
      id: 1,
      name: 'Syncfusion',
      expanded: true,
      child: [
        { id: 2, name: 'React Components' },
        { id: 3, name: 'Angular Components' },
      ]
    },
    {
      id: 4,
      name: 'Essential Studio',
      child: [
        { id: 5, name: 'Web' },
        { id: 6, name: 'Desktop' }
      ]
    }
  ];

  const fields = {
    dataSource: hierarchicalData,
    id: 'id',
    text: 'name',
    child: 'child'
  };

  const handleNodeSelected = (args) => {
    console.log('Selected:', args.nodeData.name);
  };

  return (
    <TreeViewComponent
      fields={fields}
      allowDragAndDrop={true}
      allowEditing={true}
      showCheckBox={true}
      onNodeSelected={handleNodeSelected}
    />
  );
}

export default App;

何时使用此技能

在以下情况下使用 TreeView:

  • 显示分层的多级数据(组织结构图、文件系统、导航)
  • 选择单个或多个节点,可选择启用复选框
  • 通过拖放重新排序或移动节点
  • 就地编辑节点文本并进行验证
  • 使用模板或图标自定义节点外观
  • 支持键盘访问的导航(WCAG 2.1)
  • 通过按需加载或延迟加载处理大型数据集
  • 筛选或搜索节点并包含其父节点链
  • 通过上下文菜单驱动操作
  • 在不同浏览器会话间持久化状态
  • 为国际化应用提供 RTL 语言支持
  • 使用无状态模板优化渲染性能

以下情况不要使用 TreeView:

  • 简单的扁平列表 → 改用 DropDownList 或 ListView
  • 单层导航 → 改用 NavBar 或 Breadcrumb
  • 仅显示静态数据 → 使用纯 HTML/CSS
  • 简单的数据表格 → 改用 DataGrid

架构概述

TreeViewComponent
├── Data Layer
│   ├── Hierarchical Structure
│   ├── Self-Referential Model
│   ├── Remote Data (OData, WebAPI)
│   └── Load-on-Demand
│
├── Node Management
│   ├── CRUD Operations (add, remove, update, move)
│   ├── Dynamic Refresh
│   └── Programmatic Access
│
├── User Interaction
│   ├── Selection (Single/Multi)
│   ├── Checking (Three-state)
│   ├── Editing (Inline)
│   ├── Drag-Drop (Single/Multi)
│   └── Keyboard Navigation
│
├── Customization
│   ├── Templates (String/HTML/JSX)
│   ├── Stateless Templates (Performance)
│   ├── drawNode Callback (Custom Rendering)
│   ├── Icons & Styling
│   └── CSS Customization by Level
│
├── Advanced Features
│   ├── Filtering & Searching
│   ├── Sorting (Global & Level-wise)
│   ├── Load-on-Demand Caching
│   ├── State Persistence
│   ├── RTL & Localization
│   ├── Accordion Pattern
│   └── Performance Optimization
│
├── Integration
│   ├── Context Menu
│   ├── Toolbar
│   ├── Tooltips
│   └── Data Coordination
│
├── Accessibility
│   ├── Keyboard Shortcuts (15+)
│   ├── ARIA Attributes
│   ├── Screen Reader Support
│   └── WCAG 2.1 Compliance
│
└── Event System
    ├── Data Events (created, dataBound)
    ├── Selection Events (nodeSelected, nodeSelecting)
    ├── Expansion Events (nodeExpanded, nodeExpanding)
    ├── Editing Events (nodeEdited, nodeEditing)
    ├── Drag-Drop Events (nodeDragStart, nodeDragging, nodeDropped)
    ├── Checkbox Events (nodeChecked, nodeChecking)
    ├── Custom Rendering (drawNode)
    └── Keyboard Events (keyPress)

本综合技能涵盖的内容

✅ 完整的 API 参考 - 11 个方法、19 个事件、35+ 个属性
✅ 所有数据绑定模式 - 层级式、自引用式、远程、按需加载
✅ 高级模板 - nodeTemplate、statelessTemplates、drawNode callback
✅ 选择系统 - 单选/多选、复选框、三态、自动同步
✅ 完整的拖放功能 - 单个/多个节点、验证、限制
✅ 筛选与排序 - 高级模式,包括按层级排序
✅ 编辑 - 支持验证和事件控制的内联编辑
✅ 自定义 - 模板、图标、按层级设置 CSS、整行选择
✅ 键盘导航 - 15+ 个快捷键,符合 WCAG 2.1 标准
✅ 无障碍功能 - ARIA、屏幕阅读器支持、焦点管理
✅ 高级功能 - 按需加载、持久化、RTL、本地化、手风琴
✅ 集成 - 上下文菜单、工具栏、工具提示模式
✅ 性能 - 无状态模板、大型数据集优化
✅ 真实场景模式 - 50+ 个可运行的代码示例
✅ 事件系统 - 事件取消、可阻止事件、自定义处理程序


后续步骤

  1. 从入门指南开始,完成安装和设置
  2. 从上方的快速入门导航中选择你的使用场景
  3. 参考相应的指南,了解详细模式和示例
  4. 根据具体需求组合功能

状态: ✅ 综合 TreeView 实现指南
API 覆盖范围: 100%(已记录所有方法、事件和属性)
代码示例: 50+ 个可运行模式
版本: 2.0(新增 statelessTemplates、drawNode、高级筛选等功能)

评论

支持 Markdown