useSuspenseQuery khác gì useQuery? Khi nào dùng?

useSuspenseQuery tích hợp React Suspense — thay vì return isLoading/isError, nó throw Promise (cho Suspense boundary bắt) hoặc throw Error (cho Error Boundary bắt).

  • Kết quả: data luôn defined (TypeScript happy), không cần if/else cho loading/error states.
  • Code gọn hơn: component chỉ chứa happy path.
  • Suspense boundary ở parent xử lý loading, ErrorBoundary xử lý error.
  • Khi nào dùng: project đã adopt Suspense pattern, muốn tách loading UI khỏi component logic.
  • Khi nào KHÔNG dùng: cần kiểm soát loading state chi tiết, cần show partial data trong khi fetch.
  • Lưu ý: nhiều useSuspenseQuery trong 1 component sẽ waterfall — dùng useSuspenseQueries để parallel.

Xem toàn bộ State Management cùng filter theo level & chủ đề con.

Mở danh sách State Management