mcpField
S
syncfusion-react-treeview

syncfusion-react-treeview

github.com/syncfusionデザイン・UI3713 回インストール6 日前に更新
リポジトリ

syncfusion-react-treeview について

Syncfusion TreeView でインタラクティブな階層型 UI を作る React 開発者向けガイドです。データバインディング、ノード管理、選択、ドラッグ&ドロップ、アクセシビリティ、性能面の実装方法を扱います。

主な機能

  1. 01階層データとリモートデータのバインディング
  2. 02ノードの CRUD とドラッグ&ドロップ
  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 キーを使った複数選択
  • ✅ 3 状態をサポートするチェックボックスモード
  • ✅ 親子の自動同期(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 を使用します
  • 1 レベルのみのナビゲーション → 代わりに 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
✅ 選択システム - 単一/複数選択、チェックボックス、3 状態、同期の自動化
✅ 完全なドラッグ&ドロップ - 単一/複数ノード、検証、制限
✅ フィルタリングと並べ替え - レベル単位の並べ替えを含む高度なパターン
✅ 編集 - 検証とイベント制御を備えたインライン編集
✅ カスタマイズ - テンプレート、アイコン、レベルごとの CSS、行全体の選択
✅ キーボード操作 - 15 以上のショートカット、WCAG 2.1 準拠
✅ アクセシビリティ - ARIA、スクリーンリーダーのサポート、フォーカス管理
✅ 高度な機能 - オンデマンド読み込み、永続化、RTL、ローカライズ、アコーディオン
✅ 統合 - コンテキストメニュー、ツールバー、ツールチップのパターン
✅ パフォーマンス - ステートレステンプレート、大規模データセットの最適化
✅ 実践的なパターン - 50 以上の動作するコード例
✅ イベントシステム - イベントのキャンセル、キャンセル可能なイベント、カスタムハンドラー


次のステップ

  1. インストールとセットアップについては、Getting Started から始めます
  2. 上記のクイックスタートナビゲーションから、用途を選びます
  3. 詳細なパターンと例については、該当するガイドを参照します
  4. 必要に応じて機能を組み合わせ、具体的な要件に対応します

ステータス: ✅ 包括的な TreeView 実装ガイド
API カバレッジ: 100%(すべてのメソッド、イベント、プロパティを記載)
コード例: 50 以上の動作するパターン
バージョン: 2.0(statelessTemplates、drawNode、高度なフィルタリングなどを強化)

コメント