Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • React Documentation22টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • কেন React?
  • JSX
  • Component & Props
  • Conditional Rendering
  • Lists & Keys
  • Events
  • State (useState)
  • Forms
  • Lifting State
  • useEffect
  • useRef
  • Context
  • useReducer
  • Memoization
  • Custom Hooks
  • Children & Props
  • Error Boundaries
  • Portals & Fragments
  • Data Fetching
  • Performance
  • Todo Project
  1. Docs
  2. React
  3. useEffect ও Side Effects
ReactIntermediate

useEffect ও Side Effects

useEffect কীভাবে কাজ করে — dependency array, cleanup, fetch pattern — বাংলায়।

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

Side effect কী?

Rendering-এর বাইরে যেসব কাজ — network request, timer, localStorage, DOM ম্যানিপুলেশন, subscription — সেগুলো side effect। এগুলো component body-তে সরাসরি করা যায় না; useEffect-এর ভেতরে করা হয়।

useEffect basicsjsx
jsx
import { useEffect, useState } from "react";

function App() {
  const [data, setData] = useState(null);

  useEffect(() => {
    // mount-এ চলে
    console.log("Component mounted");

    // cleanup — unmount/পরের চালনার আগে
    return () => console.log("Cleaning up");
  }, []); // dependency array

  return <div />;
}

Dependency array

Depsকখন চলে
[]শুধু mount-এ একবার
[count]count বদলালে
(কিছু না দেওয়া)প্রতিটি render-এ

Fetch pattern

Data fetching + cleanupjsx
jsx
function Profile({ userId }) {
  const [user, setUser] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    let cancelled = false; // race condition আটকাতে

    setLoading(true);
    fetch("/api/users/" + userId)
      .then((r) => r.json())
      .then((data) => {
        if (!cancelled) setUser(data);
      })
      .finally(() => {
        if (!cancelled) setLoading(false);
      });

    return () => {
      cancelled = true; // cleanup
    };
  }, [userId]); // userId বদলালে আবার fetch

  if (loading) return <p>Loading…</p>;
  return <h1>{user?.name}</h1>;
}

StrictMode double

দ্বিগুণ ডেভ রান

ডেভেলপমেন্টের StrictMode-এ effect mount-এ দুবার চলে — এটা স্বাভাবিক; production-এ একবার। তাই effect-কে idempotent (বারবার চালালেও একই ফল) রাখুন, যেমন cleanup দিয়ে timer/request বাতিল।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরState Lifting ও Props শেয়ারপরেরuseRef — DOM ও Mutable Value
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com