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 Components ও Client Components
Next.jsIntermediate

Server Components ও Client Components

React Server Components (RSC) ও Client Components কী, কখন ব্যবহার করবেন — বাংলায় সম্পূর্ণ গাইড।

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

App Router-এ সব component ডিফল্ট Server Component। শুধু client-side interactivity (state, event handler, browser API) লাগলে Client Component বানান।

Server Component কখন?

  • Data fetch — database/API থেকে, secret নিজের কাছে রাখতে
  • Backend resources — database, API key
  • Client-এ পাঠানো JavaScript কমানো
  • SEO-এর জন্য rendering google-এ দেখা

Client Component কখন?

  • State ও event handler (useState, onClick)
  • Effects (useEffect, lifecycle)
  • Browser-only API (localStorage, window)
  • Custom hooks

Client Component তৈরি

ফাইলের শুরুতে `"use client"` directive যোগ করুন। এরপর ওই ফাইলের সব import/boundary client graph-এ চলে যায়।

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

import { useState } from "react";

export default function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

Server → Client Data Pass

Server Component-এ data fetch করে Client Component-কে props হিসেবে পাঠান। সব props অবশ্যই serializable হতে হবে।

app/blog/page.tsxtsx
tsx
import LikeButton from "../ui/like-button";

export default async function Page() {
  const data = await fetch("https://api.vercel.app/blog").then((r) => r.json());

  return <LikeButton likes={data.length} />;
}
app/ui/like-button.tsxtsx
tsx
"use client";

export default function LikeButton({ likes }: { likes: number }) {
  return <button onClick={() => console.log("liked")}>Like ({likes})</button>;
}

Interleaving (children pattern)

Server Component কে Client Component-এর children হিসেবে পাঠানো যায় — client provider-এর ভেতরে server-rendered UI। Theme providers-এ এই pattern ব্যবহার হয়।

app/layout.tsxtsx
tsx
import ThemeProvider from "./theme-provider";

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html>
      <body>
        <ThemeProvider>{children}</ThemeProvider>
      </body>
    </html>
  );
}
সবকিছু client করবেন না

প্রতিটি "use client" browser-এ JavaScript পাঠায়। যতটা সম্ভব server-এ রাখুন, শুধু interactive অংশ client করুন — এতে bundle size ছোট, performance ভালো।

server-only-elading

Secret (API key) ব্যবহারের ফাইল client থেকে রক্ষা করতে import 'server-only' দিন — client-এ import চেষ্টা করলে build error দেখাবে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরLinking ও NavigationপরেরDynamic Routes
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com