syncfusion-react-treeview について
Syncfusion TreeView でインタラクティブな階層型 UI を作る React 開発者向けガイドです。データバインディング、ノード管理、選択、ドラッグ&ドロップ、アクセシビリティ、性能面の実装方法を扱います。
主な機能
- 01階層データとリモートデータのバインディング
- 02ノードの CRUD とドラッグ&ドロップ
- 03複数選択、チェックボックス、インライン編集
- 04フィルタリング、検索、並べ替え
- 05テンプレート、キーボード操作、アクセシビリティ
- 06オンデマンド読み込みと状態の永続化
活用シーン
- 01ファイルツリーや組織構造の表示
- 02ノードの選択、編集、並べ替え
- 03大規模な階層データの検索と絞り込み
- 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.mdcontext-menu-integration.mdcustomization-styling.mddata-binding.mddrag-drop-and-reordering.mdfiltering-and-searching.mdgetting-started.mdinline-editing.mdkeyboard-and-accessibility.mdnode-operations.mdselection-and-checking.mdsorting-and-ordering.mdtemplates-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
スキル習得の進行パス
初級レベル(ここから始めましょう)
- はじめに - インストール、基本コンポーネント、階層データ
- データバインディング - 5 つのバインディングパターンをすべて学ぶ
- 基本的な選択 - 単一選択、onClick の処理
中級レベル
- チェックボックス - チェックボックスによる複数選択、親子の同期
- ノード操作 - 動的な CRUD 操作
- インライン編集 - 検証付きのテキスト編集
- ドラッグ&ドロップ - ノードの並べ替えと移動
- テンプレート - nodeTemplate の基本、JSX テンプレート
上級レベル
- テンプレート - 上級 - statelessTemplates の最適化、drawNode コールバック
- フィルタリングと検索 - 親ノードをたどる複雑なフィルタリング
- 並べ替え - レベルごとのカスタム並べ替え
- 高度な機能 - オンデマンド読み込みのキャッシュ、永続化、RTL
- キーボード操作とアクセシビリティ - WCAG 準拠、スクリーンリーダーのサポート
- コンテキストメニュー - メニューを使った操作
- パフォーマンス - 大規模データセット向けの最適化戦略
ドキュメントリファレンス
| セクション | 目的 | 対象読者 | 前提条件 |
|---|---|---|---|
| はじめに | インストール、基本設定 | 初心者 | なし |
| データバインディング | 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 以上の動作するコード例
✅ イベントシステム - イベントのキャンセル、キャンセル可能なイベント、カスタムハンドラー
次のステップ
- インストールとセットアップについては、Getting Started から始めます
- 上記のクイックスタートナビゲーションから、用途を選びます
- 詳細なパターンと例については、該当するガイドを参照します
- 必要に応じて機能を組み合わせ、具体的な要件に対応します
ステータス: ✅ 包括的な TreeView 実装ガイド
API カバレッジ: 100%(すべてのメソッド、イベント、プロパティを記載)
コード例: 50 以上の動作するパターン
バージョン: 2.0(statelessTemplates、drawNode、高度なフィルタリングなどを強化)