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. Edit Form — Pre-filled
TanStackIntermediate

Edit Form — Pre-filled

একই ProductForm edit-মোডে — defaultValues, reset-এ data sync — বাংলায়।

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

দুর্দান্ত সুবিধা — একই ProductForm-কে edit-মোডেও ব্যবহার করা যায়! শুধু defaultValues product-এর ডেটা দিয়ে pass করি; button-এর লেখা auto-bদলে 'আপডেট'।

Edit dialog-এtsx
tsx
const updateProduct = useUpdateProduct();

function openEdit(product: Product) {
  setEditingProduct(product);
  setEditOpen(true);
}

<Dialog open={editOpen} onOpenChange={setEditOpen}>
  <DialogContent>
    <DialogHeader>
      <DialogTitle>Product সম্পাদনা</DialogTitle>
    </DialogHeader>
    {editingProduct && (
      <ProductForm
        // edit-মোড: product-এর মান বসে
        key={editingProduct.id}   // important
        defaultValues={{
          name: editingProduct.name,
          description: editingProduct.description ?? "",
          price: editingProduct.price,
          category: editingProduct.category,
          stock: editingProduct.stock,
          status: editingProduct.status,
        }}
        isSubmitting={updateProduct.isPending}
        onSubmit={(values) => {
          updateProduct.mutate(
            { id: editingProduct.id, input: values },
            { onSuccess: () => setEditOpen(false) },
          );
        }}
      />
    )}
  </DialogContent>
</Dialog>

key={editingProduct.id} কেন

ভিন্ন product-এ ক্লিক করলে defaultValues বদলায় বটে — কিন্তু React একই component instance রাখে, আর RHF uncontrolled। তাই পুরনো value থেকে থেকে যাবে। key ভিন্ন করলে React পুরো component re-mount করে — এতে defaultValues ঠিকভাবে বসে।

reset fallback

যদি key না চানtsx
tsx
// dialog খোলার সাথে সাথেই
useEffect(() => {
  if (editingProduct) {
    form.reset({
      name: editingProduct.name,
      price: editingProduct.price,
      category: editingProduct.category,
      stock: editingProduct.stock,
      status: editingProduct.status,
      description: editingProduct.description ?? "",
    });
  }
}, [editingProduct]);
key vs reset

উভয়ই valid — key simple/নির্ভরযোগ্য, reset দরকার যেখানে dialog খোলা-রাখা অবস্থায় অন্যান্য state (যেমন id) ফিল্টার করা। এই project-এ key ব্যবহার করব।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরCreate Form — FullপরেরDialog Modal — Create ও Edit
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com