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. Create Mutation — New Product
TanStackIntermediate

Create Mutation — New Product

useMutation দিয়ে নতুন product তৈরি এবং onSuccess-এ cache refresh — বাংলায়।

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

Queries পড়ে, mutations লেখে। useMutation দিয়ে POST চালাব; সফল হলে list query invalidate করে — table নিজে থেকেই refresh হয়।

src/lib/hooks/use-product-mutations.tsts
ts
"use client";

import { useMutation, useQueryClient } from "@tanstack/react-query";
import { toast } from "sonner";
import { createProduct } from "@/lib/products-api";
import { productKeys } from "@/lib/query-keys";


export function useCreateProduct() {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: (input: CreateProductInput) => createProduct(input),

    onSuccess: () => {
      // list cache পুরনো হয়ে গেছে → আবার fetch
      queryClient.invalidateQueries({ queryKey: productKeys.all });
      toast.success("Product তৈরি হয়েছে");
    },

    onError: (error) => {
      toast.error(error.message);
    },
  });
}

Component-এ ব্যবহার

Form submit-এtsx
tsx
const createProduct = useCreateProduct();

function handleSubmit(values: CreateProductInput) {
  createProduct.mutate(values, {
    onSuccess: () => {
      onClose?.();   // dialog বন্ধ
      form.reset();  // পরের create-এর জন্য ফরম পরিষ্কার
    },
  });
}

// button loading
<Button disabled={createProduct.isPending}>
  {createProduct.isPending ? "সেভ হচ্ছে…" : "Create Product"}
</Button>

mutation কীভাবে কাজ করে

  1. mutate(input) → mutationFn(input) → Axios POST
  2. চলাকালে isPending true — UI-তে loading দেখায়
  3. সফল → onSuccess → list invalidate → toast
  4. ব্যর্থ → onError → error message
onSuccess≠cache guarantee

onSuccess shared হয়। ভেতরে যেহেতু আমরা queryClient.invalidateQueries করি — ডেটা সার্ভার থেকে আসা নিশ্চিত হয়। তাতে user-এর screen সবসময় server-এর সত্যিই latest উপস্থিতি দেখায়।

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

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

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

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

mdanamolhasan1998@gmail.com