Syncfusion React Data Manager

syncfusion/react-ui-components-skills/skills/syncfusion-react-data-manager

作者 syncfusion6fb1c883a8412b611b95f839e0cb06e1fc8170a8無授權條款收錄於 2026年10月9日更新於 2026年10月9日

Implements Syncfusion DataManager for local/remote binding, CRUD, querying, caching, and middleware. Supports JsonAdaptor, ODataAdaptor, ODataV4Adaptor, UrlAdaptor, WebApiAdaptor, WebMethodAdaptor, RemoteSaveAdaptor, GraphQLAdaptor, CustomDataAdaptor, and CustomAdaptor. Covers Query class, filtering, sorting, paging, grouping, persistence, offline mode, caching, and error handling.

AI 產生的概覽

指導在 React 應用程式中實作 Syncfusion DataManager,涵蓋資料繫結、查詢、CRUD、快取與配接器。

功能
此技能提供在 React 應用程式中使用 Syncfusion DataManager 元件的說明與參考資料。內容涵蓋本機與遠端資料繫結、用於篩選、排序、分頁與分組的 Query 類別、CRUD 與批次操作、配接器選擇、中介軟體自訂、快取與離線模式。它產出的是指引與程式碼模式,本身並不執行資料操作。
適用情境
適用於建置需要將本機或遠端資料來源繫結至 UI 元件、執行結構化查詢,或透過 Syncfusion DataManager 進行 CRUD 操作的 React 應用程式。也適用於在 OData、Web API、GraphQL 或自訂實作等配接器之間做選擇,或需要加入快取、離線支援與要求中介軟體的場景。
執行需求
使用者專案中需要 React 版 Syncfusion DataManager 套件(例如 @syncfusion/ej2-data)。遠端繫結需要連線至目標服務的網路存取,以及該服務要求的驗證。此技能不含指令碼,僅為說明與參考文件。

Syncfusion React DataManager

The DataManager is a gateway component for managing local and remote data operations in React applications. It acts as an abstraction layer that enables seamless data binding, querying, CRUD operations, caching, and middleware customization without writing complex server communication code.

Use this skill whenever a user needs to:

  • Bind local or remote data sources to UI components
  • Query data (filter, sort, page, group, search)
  • Perform CRUD operations (insert, update, delete, batch edits)
  • Work with different data sources (JSON, OData, REST APIs, GraphQL, etc.)
  • Cache data for performance
  • Implement offline mode
  • Add custom headers or authentication
  • Transform request/response data
  • Handle complex data scenarios in React applications

🛑 MANDATORY HUMAN GATE: Adaptor Decision (Read This First)

This is the most critical rule in this skill. It cannot be skipped or bypassed.

When the user provides a service URL without explicitly naming the adaptor type, the agent MUST:

  1. STOP code generation immediately
  2. READ: references/adaptor-decision-gate.md (full file)
  3. PRESENT the gate to the user using the template in that file
  4. WAIT for explicit user confirmation of the adaptor choice
  5. Only then proceed to generate DataManager code with the confirmed adaptor

Gate Trigger Conditions — Examples

User PromptGate Required?
"Build an employee app using this service URL (http://myapi.com/employees)"✅ YES — no adaptor specified
"Connect GridComponent to http://myserver/api/data"✅ YES — "API" is ambiguous
"Use OData v4 endpoint at https://myserver/odata/employees"❌ NO — OData v4 explicitly stated
"My backend returns { Items, Count } at https://myserver/api/orders"❌ NO — WebApiAdaptor pattern confirmed
"I have a REST service at http://custom-url"✅ YES — REST is ambiguous (UrlAdaptor vs WebApiAdaptor vs ODataV4)
"Bind the grid to local list data"❌ NO — local binding, no adaptor needed

📄 Full gate template, adaptor cheat sheet, disambiguation questions, and security rules: → references/adaptor-decision-gate.md


⚠️ Security & Trust Boundary

  • This skill generates code only, the agent does not execute data operations or fetch remote endpoints — all DataManager interactions occur solely within the user's application at runtime.
  • Generated code must treat all third-party API responses as untrusted input, never bind to unvalidated or user-provided URLs, and ensure authentication is enforced on all remote endpoints.

When to Use DataManager

DataManager is best for:

  • Flexible data management → Works with any data source (local, REST, OData, GraphQL)
  • Complex queries → Filtering, sorting, paging, grouping, searching
  • CRUD operations → With batch support and transaction patterns
  • Middleware customization → Pre/post request hooks
  • Offline support → Cache and sync when connection restored
  • Adaptor switching → Change data sources without code changes

Direct component binding (Grid, Scheduler, etc.) is better when:

  • You only need basic data binding without complex querying
  • Performance is critical for very large datasets
  • You don't need middleware customization

⚠️ Critical Security Requirements

When binding to remote services, you MUST implement these protections:

  1. Use HTTPS only — never use unencrypted HTTP connections; encrypt all data in transit
  2. Use string variables for URLs — assign endpoints to private string properties rather than hardcoding in markup; this enables centralized validation and easier maintenance
  3. Validate and sanitize responses — implement server-side schema validation; reject unexpected response formats; map responses to strongly-typed models
  4. Monitor remote calls — log all external API requests with timestamps, endpoints, and outcomes for security audit trails
  5. Implement CORS securely — use specific trusted origins only; never use wildcard * in production; require HTTPS
  6. Prevent indirect prompt injection attacks — verify endpoint ownership; implement request signing; validate response content types and schemas before consuming data

Third-party API responses can introduce security risks. Always verify endpoint legitimacy, authenticate requests, and validate data before binding to UI components.

Key Concepts

Data Binding

Connect DataManager to data sources using the json property (local arrays) or url property (remote APIs). Query methods: executeLocal() for local data, executeQuery() for remote data.

Query Class

Build structured queries using the Query class: from(), where(), select(), sortBy(), take(), expand(), group() chained together for powerful data operations.

Adaptors

Adaptors are interfaces that enable DataManager to communicate with different data sources:

  • JsonAdaptor → Local JavaScript arrays
  • ODataAdaptor → OData v3 services
  • ODataV4Adaptor → OData v4 services
  • UrlAdaptor → Generic REST endpoints
  • WebApiAdaptor → ASP.NET Web API
  • RemoteSaveAdaptor → Hybrid client-side queries + server-side CRUD
  • WebMethodAdaptor → Legacy ASP.NET ASMX services
  • GraphQLAdaptor → GraphQL endpoints
  • CustomAdaptor → Custom implementation for proprietary services

CRUD Operations

  • insert() → Add records to data source
  • update() → Modify existing records (keyField as first parameter)
  • remove() → Delete records (keyField as first parameter)
  • saveChanges() → Batch multiple operations into single request

Middleware & Customization

  • applyPreRequestMiddlewares() → Modify request before sending (auth tokens, headers)
  • applyPostRequestMiddlewares() → Transform response before binding (formatting, filtering)
  • Custom adaptors for proprietary APIs
  • Error handlers for request failures

Caching & Performance

  • enableCache → Prevent re-requesting previously loaded pages
  • Offline mode → Store data locally, sync when connection restored
  • Load on demand → Lazy load data as user scrolls (virtual scrolling)
  • Deferred operations → Promise-based async/await patterns

Documentation & Navigation Guide

Choose the reference file based on your current task:

🛑 Adaptor Decision Gate (Human Approval — MANDATORY FIRST STEP for Remote URLs)

📄 Read: references/adaptor-decision-gate.md [blocked]

  • When to trigger: User provides any service URL without explicitly naming the adaptor
  • Gate presentation template (copy-paste ready)
  • Full adaptor comparison table (ODataV4 / OData / WebAPI / URL / GraphQL / Custom)
  • Adaptor quick-reference cheat sheets with code examples
  • Disambiguation follow-up questions
  • Security rules applied after gate confirmation
  • Stage 1 & Stage 3 integration instructions (flags ambiguous URLs in component mapping JSON)
  • Keywords that auto-resolve the gate (no user confirmation needed)

Getting Started Setup

📄 Read: references/getting-started.md [blocked]

  • Installation steps (npm)
  • Project setup & imports
  • Basic DataManager initialization
  • First query execution
  • Environment setup
  • Common errors & fixes

Data Binding Strategies

📄 Read: references/data-binding.md [blocked]

  • Local data binding with json property
  • Remote data binding with url property
  • executeLocal() for client-side queries
  • executeQuery() for server requests
  • Switching between data sources
  • Response format handling
  • When to use each approach

Query Operations & Filtering

📄 Read: references/querying-and-filtering.md [blocked]

  • Query class fundamentals
  • Filtering with where() and Predicate
  • Sorting (ascending/descending)
  • Pagination with take() and skip()
  • Field projection with select()
  • Related data loading with expand()
  • Grouping data by field(s)
  • Complex multi-condition queries
  • Chaining query operations

CRUD Operations & Batch Edits

📄 Read: references/crud-operations.md [blocked]

  • insert() → Add new records
  • update() → Modify existing records
  • remove() → Delete records
  • keyField in CRUD method parameters
  • saveChanges() for batch operations
  • Batch insert/update/remove
  • Transaction patterns
  • Data validation before operations
  • Response handling

Choosing & Using Adaptors

📄 Read: references/adaptors-guide.md [blocked]

  • Which adaptor to use (decision tree)
  • JsonAdaptor for local arrays
  • OData adaptors (v3 & v4)
  • REST API adaptors (Url, WebApi)
  • RemoteSaveAdaptor hybrid approach
  • Legacy ASMX (WebMethodAdaptor)
  • GraphQL endpoint integration
  • Custom adaptor implementation
  • CORS & crossDomain configuration
  • Platform-specific response handling

Middleware & Request Customization

📄 Read: references/middleware-customization.md [blocked]

  • Pre-request middleware for auth tokens
  • Custom header injection
  • Request transformation
  • Post-request middleware for response mapping
  • Error handler functions
  • Data validation & filtering in middleware
  • Custom adaptor implementation
  • Middleware execution order & timing

Caching & Offline Mode

📄 Read: references/caching-offline-mode.md [blocked]

  • enableCache property for performance
  • When cache clears (sort, filter, CRUD)
  • Offline mode implementation
  • Local storage persistence
  • Sync strategies after reconnection
  • Cache size & memory management
  • Best practices & performance patterns

Advanced Features & Patterns

📄 Read: references/advanced-features.md [blocked]

  • Load on demand & pagination patterns
  • Virtual scrolling setup
  • Lazy loading data
  • Deferred operations (Promise API)
  • Async/await with DataManager
  • State persistence across sessions
  • Memory management
  • Error handling strategies
  • Performance optimization tips
  • Common pitfalls & solutions

Quick Start Example

tsx
import React, { useEffect, useState } from 'react';import { DataManager, WebApiAdaptor, Query } from '@syncfusion/ej2-data';
export default function DataManagerDemo() {  const [items, setItems] = useState([]);
  useEffect(() => {    // Create DataManager with remote data source    const dataManager = new DataManager({      url: 'url',      adaptor: new WebApiAdaptor(),      crossDomain: true    });
    // Execute query with filtering, sorting, paging    dataManager.executeQuery(      new Query()        .where('Freight', 'greaterthan', 500) // Filter        .sortBy('OrderDate') // Sort        .take(10) // Pagination    ).then((e) => {      setItems(e.result); // Bind results    });  }, []);
  return (    <div>      <h2>Orders</h2>      <ul>        {items.map((item) => (          <li key={item.OrderID}>{item.CustomerID} - ${item.Freight}</li>        ))}      </ul>    </div>  );}

Common Use Cases

Case 1: Display local data with filtering → Use JsonAdaptor + Query + where() for client-side filtering

Case 2: Fetch server data with authentication → Use WebApiAdaptor + applyPreRequestMiddlewares() for token injection

Case 3: Work offline, sync later → Use enableCache + offline mode + saveChanges() for batch sync

Case 4: Complex nested data relationships → Use ODataV4Adaptor or RemoteSaveAdaptor + expand() for related data

Case 5: GraphQL backend → Use GraphQLAdaptor with custom query builder

Case 6: Legacy ASP.NET ASMX service → Use WebMethodAdaptor with appropriate response mapping

Key Props & Options

PropertyTypePurpose
jsonArrayLocal JavaScript array of objects
urlstringRemote server endpoint URL
adaptorAdaptorJsonAdaptor, ODataAdaptor, WebApiAdaptor, etc.
enableCachebooleanCache pages to prevent redundant requests
offlinebooleanEnable offline mode with local storage
crossDomainbooleanCORS requests to different domain

Comparison: DataManager vs Direct Binding

FeatureDataManagerDirect Binding
Flexible adaptors✓ Easy switching✗ Fixed to one source
Complex queries✓ Query class with chaining✗ Limited filtering
CRUD operations✓ Full support + batch✗ Basic operations
Middleware✓ Pre/post hooks✗ None
Caching✓ Built-in✗ Manual implementation
Offline mode✓ Built-in✗ Manual implementation
Performance (small datasets)≈ Same✓ Slightly faster
Performance (large datasets)✓ Lazy loading support✗ All at once

Use DataManager when building data-driven applications with flexibility, caching, and middleware needs.

Use direct binding for simple, one-off displays without complex queries or offline support.

來源與署名

來源:syncfusion/react-ui-components-skills位於skills/syncfusion-react-data-manager提交6fb1c88

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架