React CRUD Data Table — Build and Explain
Context
Design and implement a React application that renders a data table with full CRUD capabilities and a production-ready user experience. Assume a REST API is available; if not, stub/mock one. Optimize for clarity, accessibility, and performance.
Requirements
-
Data table features
-
Pagination (client or server-driven)
-
Sorting (single-column minimum; multi-column optional)
-
Inline editing (per-row)
-
Create, Read, Update, Delete (CRUD)
-
Form validation (client-side; surface server-side errors)
-
Optimistic updates with rollback on error
-
Robust error handling (toasts/banners, retry)
-
Architecture explanation
-
State management strategy (local vs. global/server-state)
-
Component structure and responsibilities
-
Accessibility considerations (semantics, keyboard, ARIA)
-
Performance considerations (virtualization, memoization)
Assumptions (you may adjust as needed)
-
REST endpoints:
-
GET /users?page=1&pageSize=20&sortBy=name&sortDir=asc
-
POST /users
-
PUT /users/:id
-
DELETE /users/:id
-
Entity fields: id, name, email, role, status
Deliverables
-
A working implementation or detailed blueprint with code sketches
-
Explanation of design choices for state, components, a11y, and performance
-
Notes on pitfalls, edge cases, and validation/rollback guardrails