Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • TanStack Documentation42টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Project Overview
  • Architecture
  • Folder Structure
  • Setup Next.js
  • Axios Setup
  • API Client
  • API Types
  • Query Install
  • Query Provider
  • Query Keys
  • Data Fetching
  • States
  • Devtools
  • Create Mutation
  • Update Mutation
  • Delete Mutation
  • Cache Invalidation
  • Optimistic Update
  • Pagination
  • Search
  • Filtering
  • Sorting
  • TanStack Table
  • Table Explore
  • Table Columns
  • Table Actions
  • React Hook Form
  • Zod Validation
  • Create Form
  • Edit Form
  • Dialog Modal
  • Delete Confirmation
  • Complete CRUD Flow
  • Full Integration
  • Error Handling
  • Loading States
  • Reusable Components
  • Production
  • Complete Project
  • Common Mistakes
  • Best Practices
  • Interview Q&A
  1. Docs
  2. TanStack
  3. Loading, Error ও Empty State
TanStackIntermediate

Loading, Error ও Empty State

useQuery-এর status/state থেকে তিনটি UI অবস্থা বের করা — বাংলায়।

6টি অংশবাংলা ভাষায়

প্রতিটি data-fetching UI-র তিনটি অবশ্যক অবস্থা: loading, error, empty। TanStack Query এই state গুলোর ব্যবস্থা করে — শুধু render করতে হয়।

src/components/products/product-list.tsxtsx
tsx
"use client";

import { useProducts } from "@/lib/hooks/use-products";
import { ProductTable } from "./product-table";
import { Skeleton } from "@/components/ui/skeleton";

export function ProductList({ params }: { params: ProductQueryParams }) {
  const { data, isPending, isError, error, refetch } = useProducts(params);

  // 1) Loading
  if (isPending) {
    return <ProductTableSkeleton />;
  }

  // 2) Error
  if (isError) {
    return (
      <div className="rounded-xl border p-6 text-center">
        <p className="font-medium">ডেটা লোড করা যায়নি</p>
        <p className="mt-1 text-sm text-muted-foreground">{error.message}</p>
        <Button onClick={() => refetch()} className="mt-3">
          আবার চেষ্টা করুন
        </Button>
      </div>
    );
  }

  // 3) Empty
  if (data.items.length === 0) {
    return <EmptyState message="কোনো product পাওয়া যায়নি" />;
  }

  // 4) Success
  return <ProductTable data={data.items} />;
}

কোন status কখন

Stateকখন সত্য
isPendingপ্রথমবার ডেটা নেই, fetch চলছে
isFetchingযেকোনো fetch চললে (background সহ)
isErrorquery শেষবার ভুল হয়েছে
isSuccessdata আছে
isRefetchingডেটা আছে + আবার fetch হচ্ছে
Reusable EmptyStatetsx
tsx
export function EmptyState({
  message,
  action,
}: {
  message: string;
  action?: React.ReactNode;
}) {
  return (
    <div className="rounded-xl border py-16 text-center">
      <p className="text-muted-foreground">{message}</p>
      {action && <div className="mt-4">{action}</div>}
    </div>
  );
}
v4 slug মনে রাখুন

TanStack Query v4/ v5-এ isLoading আসলে isPending && isFetching — অর্থাৎ ডেটা পূর্বেই কার থাকলে isLoading false। সাধারণত isPending আর isFetching দিয়েই কাজ করুন; data === undefined চেকও নির্ভরযোগ্য।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরData Fetching — useQueryপরেরTanStack Query Devtools
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com