Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Next.js Documentation27টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • কেন Next.js?
  • Installation
  • Project Structure
  • Routing ও Pages
  • Layouts
  • Linking ও Navigation
  • Server & Client Components
  • Dynamic Routes
  • Data Fetching
  • Loading ও Streaming
  • Error Handling
  • Route Handlers
  • Server Actions
  • Caching ও Revalidation
  • Metadata ও SEO
  • Images ও Fonts
  • Styling
  • Environment Variables
  • Development ও Production
  • Deployment
  • Configuration
  • Static ও Dynamic Rendering
  • Proxy
  • Performance
  • Project: Blog
  • Project: Dashboard
  1. Docs
  2. Next.js
  3. Server Actions ও Mutations
Next.jsAdvanced

Server Actions ও Mutations

"use server" দিয়ে form submission ও data mutation — Server Actions সম্পূর্ণ বাংলায়।

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

Server Actions হলো server-এ চলা asynchronous functions যাকে Client Component থেকে সরাসরি কল করা যায়। Form submission, data update-এর জন্য সবচেয়ে modern পদ্ধতি।

Inline Server Action

app/posts/page.tsxtsx
tsx
export default function Page() {
  async function createPost(formData: FormData) {
    "use server";

    const title = formData.get("title");
    await db.post.create({ data: { title } });
  }

  return (
    <form action={createPost}>
      <input name="title" placeholder="Post title" required />
      <button type="submit">Publish</button>
    </form>
  );
}

Separate Actions File

app/actions.tsts
ts
"use server";

export async function createPost(formData: FormData) {
  const title = formData.get("title");
  await db.post.create({ data: { title } });
}

useActionState দিয়ে State Management

app/ui/form.tsxtsx
tsx
"use client";

import { useActionState } from "react";
import { createPost } from "@/app/actions";

const initialState = { message: "" };

export function Form() {
  const [state, formAction, pending] = useActionState(
    createPost,
    initialState
  );

  return (
    <form action={formAction}>
      <input type="text" name="title" required />
      {state?.message && <p aria-live="polite">{state.message}</p>}
      <button disabled={pending}>
        {pending ? "Creating..." : "Create Post"}
      </button>
    </form>
  );
}

Revalidate After Mutation

app/actions.tsts
ts
"use server";

import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";

export async function createPost(formData: FormData) {
  const post = await db.post.create({
    data: { title: formData.get("title") },
  });

  revalidatePath("/posts"); // cache refresh
  redirect(`/posts/${post.id}`);
}
directive সতর্কতা

"use server" directive ফাইলের শুরুতে বা function-এর ভেতরে দেওয়া যায়। ফাইলে দিলে সব export Server Action হয়। Client Component থেকে import করা যায় এবং সবসময় async function হতে হয়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরRoute Handlers (API)পরেরCaching ও Revalidation
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com