useState Deep Explanation

useState Full Guide (বাংলা)

useState হলো React-এর সবচেয়ে বেশি ব্যবহৃত Hook, যা Functional Component-এর ভিতরে state তৈরি এবং নিয়ন্ত্রণ করতে সাহায্য করে। React-এ state মানে হলো এমন ডাটা যেটি পরিবর্তন হলে UI (User Interface) আবার রেন্ডার হয়।


📌 useState কী?

useState হলো একটি React Hook যা component-এর ভিতরে পরিবর্তনশীল ডাটা (state) সংরক্ষণ করতে ব্যবহৃত হয়। State পরিবর্তন হলে React স্বয়ংক্রিয়ভাবে UI রিফ্রেশ করে দেয়।


📌 useState কোথায় ব্যবহার করবেন?

  • Counter App
  • Form input value নিয়ন্ত্রণ
  • Toggle বা Show/Hide data
  • Button click এ UI update করা
  • API data store করা

📌 useState Hook এর Syntax

const [state, setState] = useState(initialValue);

state: বর্তমান মান (variable)
setState: state আপডেট করার function
initialValue: state-এর শুরুর মান


⭐ Example 1 — Basic Counter

import { useState } from "react";

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

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

export default Counter;

এখানে count হলো state এবং setCount state change করার function। প্রতি বার button চাপলে UI আবার রেন্ডার হয়।


⭐ Example 2 — State with String

const [name, setName] = useState("Rahim");

return (
  <div>
    <h2>Name: {name}</h2>
    <button onClick={() => setName("Karim")}>Change Name</button>
  </div>
);

⭐ Example 3 — State with Objects

Object update করতে spread operator ব্যবহার করতে হয়।

const [user, setUser] = useState({
  name: "Rahim",
  age: 22
});

const updateAge = () => {
  setUser({ ...user, age: user.age + 1 });
};

return (
  <div>
    <h2>Name: {user.name}</h2>
    <h2>Age: {user.age}</h2>
    <button onClick={updateAge}>Increase Age</button>
  </div>
);

⭐ Example 4 — State with Array

const [items, setItems] = useState([]);

const addItem = () => {
  setItems([...items, `Item ${items.length + 1}`]);
};

return (
  <div>
    <button onClick={addItem}>Add Item</button>
    {items.map((item, index) => (
      <p key={index}>{item}</p>
    ))}
  </div>
);

📌 Important Concept: Re-render

State পরিবর্তন হলে React UI রি-রেন্ডার করে। কিন্তু state একই value দিলে রি-রেন্ডার হয় না।


📌 State Update Asynchronously হয়

setState() করার পরপরই state পরিবর্তন হয় না। React state batching করে।

❌ Wrong (immediate console):

setCount(count + 1);
console.log(count); // এখনো পুরানো value দেখাবে

✔ Correct (useEffect or callback):

setCount(prev => prev + 1);

📌 Functional Update (Best Practice)

যদি নতুন state আগের state-এর উপর নির্ভর করে, তাহলে functional update ব্যবহার করুন।

setCount(prevCount => prevCount + 1);

📌 Multiple State Example

const [name, setName] = useState("");
const [age, setAge] = useState(0);

একটি component-এ একাধিক state থাকতে পারে।


📌 Clearing or Resetting State

setCount(0);
setName("");
setUser({});
setItems([]);

📌 Best Practices for useState

  • State যত কম রাখবেন, performance তত ভালো হবে।
  • Object বা Array update করতে spread ব্যবহার করুন।
  • setState কে loop-এর ভিতরে কখনো ব্যবহার করবেন না।
  • নতুন value আগের value-এর উপর নির্ভর করলে functional update করুন।

📌 Small Project — Counter with Increase/Decrease/Reset

import { useState } from "react";

function CounterProject() {
  const [count, setCount] = useState(0);

  return (
    <div style={{ textAlign: "center" }}>
      <h1>Counter: {count}</h1>

      <button onClick={() => setCount(count + 1)}>Increase</button>
      <button onClick={() => setCount(count - 1)}>Decrease</button>
      <button onClick={() => setCount(0)}>Reset</button>
    </div>
  );
}

export default CounterProject;

🎉 Final Summary

  • useState React-এর সবচেয়ে গুরুত্বপূর্ণ Hook
  • এটি component-এর data পরিবর্তন করতে দেয়
  • State change হলে UI rerender হয়
  • Array/object update করতে spread operator গুরুত্বপূর্ণ

React শেখার প্রথম ধাপ হলো useState ভালোভাবে বোঝা।

👼 Quiz
/

লোড হচ্ছে...