Quyết định state sống ở đâu là một trong những kỹ năng kiến trúc quan trọng nhất. Nguyên tắc dẫn dắt: đặt mỗi mẩu state ở phạm vi hẹp nhất vẫn thỏa mãn tất cả những ai cần nó — và khớp mỗi loại state với công cụ đúng.
Một framework ra quyết định
1. Ai cần state này?
- Một component → local state (useState)
- Một vài component liên quan → nâng lên cha chung / context nhỏ
- Nhiều component cách xa → global store hoặc context
2. Đây là LOẠI state gì?
- Dữ liệu server/remote → thư viện server-state (React Query/SWR)
- UI/client state → useState / Zustand / Redux
- Có thể suy ra từ URL (filter, page)→ URL (searchParams)
- Input form → thư viện form hoặc local state
3. Nó thay đổi THƯỜNG XUYÊN ra sao?
- Hiếm khi, chia sẻ rộng (theme) → Context là ổn
- Thường xuyên, chia sẻ rộng → store với subscription chọn lọc
