State management là quyết định kiến trúc ảnh hưởng lâu dài tới codebase — nhà tuyển dụng dùng câu hỏi này để kiểm tra bạn có hiểu đánh đổi giữa các lựa chọn, hay chỉ dùng công cụ quen thuộc nhất mà không cân nhắc.
useState/useReducer, không cần thư viện ngoài.Đây chính là điểm nhiều ứng viên bỏ sót: nhầm server state với global client state khiến kiến trúc phức tạp không cần thiết.
Context API: có sẵn trong React, phù hợp cho state ít thay đổi (theme, locale). Nhược điểm: mọi component con của Provider re-render khi value đổi, trừ khi tách Context nhỏ hoặc dùng memo cẩn thận.
Redux (đặc biệt Redux Toolkit): mạnh về debugging (Redux DevTools time-travel), middleware rõ ràng cho side effect (redux-thunk/saga), phù hợp ứng dụng lớn nhiều state phức tạp liên kết nhau. Nhược điểm: boilerplate nhiều hơn (dù RTK đã giảm đáng kể), learning curve cao hơn.
Zustand: API tối giản, không cần Provider bọc toàn app, ít boilerplate, hiệu năng tốt vì component chỉ re-render khi đúng phần state nó subscribe thay đổi. Phù hợp dự án vừa/nhỏ cần nhanh gọn.
"Component bị re-render không cần thiết khi dùng Context, bạn fix thế nào?" — Tách Context thành nhiều Context nhỏ theo domain (thay vì 1 Context khổng lồ chứa mọi thứ), hoặc dùng useMemo cho value truyền vào Provider để tránh tạo object mới mỗi lần render.
Đừng nói "Zustand tốt nhất" hay "Redux là chuẩn công nghiệp" — hãy nói "tuỳ quy mô dự án và độ phức tạp state, em từng dùng X cho dự án Y vì lý do Z". Thể hiện tư duy chọn công cụ theo bài toán, không theo trend.