Redux মূলত স্টেট ম্যানেজমেন্টের একটি কাঠামো যা অ্যাপ্লিকেশনের স্টেট পরিবর্তন ও ট্র্যাকিংকে সহজ ও পূর্বানুমানযোগ্য করে তোলে। Redux-এ স্টেট ম্যানেজমেন্টের মূল ধারণাগুলি তিনটি প্রধান উপাদান দ্বারা পরিচালিত হয়: স্টোর (Store), একশন (Action), এবং রিডিউসার (Reducer)। এই উপাদানগুলো একসাথে কাজ করে অ্যাপ্লিকেশনের স্টেটকে কেন্দ্রীয়ভাবে এবং নির্ধারিত নিয়মে পরিবর্তন করতে।
১. স্টোর (Store)
Redux-এর স্টোর হলো অ্যাপ্লিকেশনের কেন্দ্রীয় স্টেট। এটি একটি JavaScript অবজেক্ট হিসেবে কাজ করে এবং অ্যাপ্লিকেশনের সমস্ত স্টেট ধারণ করে। একবার স্টোরে একটি স্টেট সেট হলে, সেই স্টেট অ্যাপ্লিকেশনের যেকোনো অংশে অ্যাক্সেসযোগ্য হয়ে যায়। Redux স্টোর অ্যাপ্লিকেশনটির ডাটা প্রবাহের নিয়ন্ত্রক হিসেবে কাজ করে, এবং এটি পুরো অ্যাপ্লিকেশনকে একটি কেন্দ্রীভূত ডেটা উৎস প্রদান করে।
- স্টোরের কার্যাবলী:
- স্টেট ধারণ করা
- স্টেট পরিবর্তন করার জন্য একশন গ্রহণ করা
- রিডিউসার দিয়ে স্টেট আপডেট করা
- স্টেট পরিবর্তন ঘটলে কম্পোনেন্টগুলোকে রেন্ডার করা
২. একশন (Action)
একশন হলো একটি প্লেইন JavaScript অবজেক্ট, যা একটি নির্দিষ্ট type প্রপার্টি দিয়ে স্টেট পরিবর্তনের নির্দেশ দেয়। একশন রিডিউসারকে জানায় কিভাবে স্টেট পরিবর্তন করতে হবে, কিন্তু একশন নিজে কোন স্টেট পরিবর্তন করে না। এটি কেবল একটি "বিজ্ঞপ্তি" হিসেবে কাজ করে, যেটি স্টোরে পাঠানো হয়, যাতে রিডিউসার স্টেট আপডেট করতে পারে।
একশনের উদাহরণ:
const addTodoAction = { type: 'ADD_TODO', payload: 'Learn Redux' };এখানে,
ADD_TODOএকশনের টাইপ, এবংpayloadহলো সেই ডাটা যা স্টেটে যুক্ত করা হবে।
৩. রিডিউসার (Reducer)
রিডিউসার হলো একটি ফাংশন যা স্টেট এবং অ্যাকশন গ্রহণ করে এবং নতুন স্টেট রিটার্ন করে। রিডিউসার কোনও সরাসরি স্টেট পরিবর্তন করে না, বরং এটি একটি নতুন স্টেট অবজেক্ট তৈরি করে যা পরিবর্তনশীল অংশকে ধারণ করে। রিডিউসার স্টেটের পূর্ববর্তী মান এবং অ্যাকশন অনুযায়ী নতুন স্টেট তৈরি করে।
রিডিউসারের উদাহরণ:
function todosReducer(state = [], action) { switch(action.type) { case 'ADD_TODO': return [...state, action.payload]; default: return state; } }এখানে,
ADD_TODOএকশন আসলেstateএর সাথে নতুন টুডু যোগ করে নতুন স্টেট রিটার্ন করছে।
Redux-এ State Management এর ফ্লো
Redux-এ স্টেট ম্যানেজমেন্টের ফ্লো সাধারণত তিনটি ধাপে সম্পন্ন হয়:
- একশন তৈরি করা: প্রথমে আপনি একটি অ্যাকশন তৈরি করেন যেটি স্টেট পরিবর্তন করার জন্য নির্দেশ দেয়।
- ডিসপ্যাচ করা: এরপর অ্যাকশনটি স্টোরে পাঠানো হয় (ডিসপ্যাচ করা হয়), যাতে রিডিউসারটি সেটি গ্রহণ করতে পারে।
- স্টেট আপডেট করা: রিডিউসার স্টেট এবং অ্যাকশন অনুযায়ী একটি নতুন স্টেট তৈরি করে এবং এটি স্টোরে সেট করা হয়। পরবর্তীতে React কম্পোনেন্টে সেই নতুন স্টেট রেন্ডার হয়।
Redux এর স্টেট ম্যানেজমেন্টের সুবিধা
- কেন্দ্রীভূত স্টেট: Redux পুরো অ্যাপ্লিকেশনের স্টেট এক জায়গায় রাখে, যা অ্যাপ্লিকেশনটির স্টেট ম্যানেজমেন্টকে সহজ করে।
- পূর্বানুমানযোগ্য স্টেট: স্টেট পরিবর্তনের প্রক্রিয়া নির্দিষ্ট নিয়ম অনুসরণ করে, ফলে ডিবাগিং সহজ হয়।
- স্কেলেবিলিটি: অ্যাপ্লিকেশন বড় হওয়ার সাথে Redux স্টেট ম্যানেজমেন্টকে সুসংগঠিত রাখে।
- কম্পোনেন্টগুলোর মধ্যে স্টেট শেয়ারিং: Redux এর মাধ্যমে স্টেট সহজে শেয়ার করা যায়, যা বড় অ্যাপ্লিকেশনগুলোতে বিশেষভাবে উপকারী।
সারাংশ
Redux-এর মূল ধারণা হলো স্টেট ম্যানেজমেন্টের জন্য একটি নির্দিষ্ট কাঠামো প্রদান করা, যেখানে স্টেট কেন্দ্রীয়ভাবে রাখা হয় এবং শুধুমাত্র নির্দিষ্ট একশন এবং রিডিউসারের মাধ্যমে পরিবর্তিত হয়। এটি অ্যাপ্লিকেশনকে স্কেলযোগ্য, পূর্বানুমানযোগ্য, এবং ডিবাগিং সহজ করে তোলে।