Skip to Content

5. useReducer

useReducer হলো একটি hook যা complex state management বা multiple state value ব্যবস্থাপনার জন্য ব্যবহার করা হয়। এটি Redux-এর মতো reducer pattern ব্যবহার করে।

import { useReducer } from "react"; const initialState = { count: 0 }; function reducer(state, action) { switch (action.type) { case "increment": return { count: state.count + 1 }; case "decrement": return { count: state.count - 1 }; default: return state; } } function Counter() { const [state, dispatch] = useReducer(reducer, initialState); return ( <div> <p>Count: {state.count}</p> <button onClick={() => dispatch({ type: "increment" })}>+</button> <button onClick={() => dispatch({ type: "decrement" })}>-</button> </div> ); }

➡️ এখানে useReducer একটি state এবং একটি dispatch function প্রদান করে, যা reducer function ব্যবহার করে state আপডেট করে।


🧠 useState vs useReducer (React)

React-এর মধ্যে state ম্যানেজমেন্টের জন্য দুইটি জনপ্রিয় হুক হলো useState এবং useReducer। নিচে বাংলায় এই দুইটি হুকের তুলনামূলক আলোচনা করা হলো।


🔄 useState vs useReducer

দিকuseStateuseReducer
📌 ব্যবহারের ধরনসাধারণ এবং সহজ state ব্যবস্থাপনার জন্য ব্যবহার করা হয়জটিল এবং বহু state বা লজিক থাকলে ব্যবহৃত হয়
🎯 উপযুক্ততাযখন 1-2 টি simple state যেমন input field, counter ইত্যাদি থাকেযখন অনেক state একসাথে পরিচালনা করতে হয় বা state-এর উপর ভিত্তি করে জটিল লজিক থাকে
🧠 State structureসাধারণত primitive (string, number, boolean), array বা objectসাধারণত object আকারে ব্যবহৃত হয়, যেটা একটি reducer function দ্বারা update হয়
⚙️ Update logicsetState(newValue) বা setState(prev => ...)dispatch({ type: "ACTION", payload }) এবং একটি reducer function
✅ Syntax সহজহ্যাঁ, অনেক সহজ ও সরলতুলনামূলকভাবে জটিল, কিন্তু scalable
🔄 Multiple state handlingএকাধিক useState লাগতে পারেসব state একসাথে reducer এ handle করা যায়
💬 উদাহরণCounter, Toggle, Form InputTodo App, Complex Form, Modal logic

🧪 উদাহরণ

✅ useState

import { useState } from "react"; function Counter() { const [count, setCount] = useState(0); return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increase</button> </div> ); }

✅ useReducer

import { useReducer } from "react"; const initialState = { count: 0 }; function reducer(state, action) { switch (action.type) { case "increment": return { count: state.count + 1 }; case "decrement": return { count: state.count - 1 }; default: return state; } } function Counter() { const [state, dispatch] = useReducer(reducer, initialState); return ( <div> <p>Count: {state.count}</p> <button onClick={() => dispatch({ type: "increment" })}>Increase</button> <button onClick={() => dispatch({ type: "decrement" })}>Decrease</button> </div> ); }

🧠 কবে কোনটা ব্যবহার করব?

পরিস্থিতিকোনটা ব্যবহার করব
Simple counter, toggle switchuseState
Input field বা Form-এর একটি fielduseState
Multiple related state বা nested objectuseReducer
State update লজিক জটিল (if-else, switch, validation)useReducer
পূর্ববর্তী state এর উপর ভিত্তি করে নতুন state নির্ধারণ করতে হয়useReducer

👉 শেষ কথা: useState এবং useReducer দুটোই শক্তিশালী টুল। ছোট খাটো সহজ state এর জন্য useState, আর বড় ও জটিল পরিস্থিতির জন্য useReducer ব্যবহার করলেই হবে!

Last updated on