Redux Middleware কী?
Redux Middleware হলো একটি ফাংশন বা লেয়ার যা Redux-এর dispatch
এবং reducer
-এর মধ্যে কাজ করে। এটি অ্যাকশনগুলোকে প্রক্রিয়াজাত করার আগে বা পরে নির্দিষ্ট কাজ করতে দেয়।
Middleware-এর মূল উদ্দেশ্য:
- অ্যাসিঙ্ক্রোনাস ডেটা হ্যান্ডল করা (যেমন API কল)।
- অ্যাকশনগুলোর উপর লগিং বা অন্যান্য প্রক্রিয়া সম্পন্ন করা।
- Redux Store-এ সরাসরি পরিবর্তন আনার আগে প্রয়োজনীয় চেক বা ফিল্টারিং করা।
Middleware-এর কাজ করার ধরণ
Middleware তিনটি প্রধান স্টেপে কাজ করে:
- Redux Store থেকে
getState
ফাংশনের মাধ্যমে বর্তমান স্টেট পাওয়া। dispatch
ফাংশনের মাধ্যমে অ্যাকশন পাস করা।- এগিয়ে যাওয়ার জন্য
next()
ফাংশন কল করা।
Middleware ব্যবহার করার সুবিধা
- অ্যাসিঙ্ক্রোনাস অ্যাকশন হ্যান্ডলিং: API থেকে ডেটা ফেচ বা অন্য কোনো অ্যাসিঙ্ক্রোনাস কাজ সহজে করা যায়।
- লগিং: Redux অ্যাকশন ও স্টেট পরিবর্তনের লগ রাখা।
- কাস্টম প্রসেসিং: অ্যাকশন প্রসেস করার আগে বা পরে অতিরিক্ত কাজ যোগ করা।
- ডিবাগিং: Redux স্টেটে সমস্যা হলে ডিবাগিং সহজ হয়।
Middleware তৈরির ফর্ম্যাট
Middleware একটি ফাংশন যা এই ফর্ম্যাটে লেখা হয়:
const exampleMiddleware = store => next => action => {
console.log("Middleware Triggered:", action);
next(action); // অ্যাকশনটি পরবর্তী middleware বা reducer-এ পাঠানো
};
Redux-এ Middleware যোগ করা
Middleware যোগ করার জন্য applyMiddleware
ফাংশন ব্যবহার করা হয়।
উদাহরণ:
import { createStore, applyMiddleware } from 'redux';
// একটি সাধারণ middleware
const logger = store => next => action => {
console.log('Dispatching:', action);
let result = next(action); // অ্যাকশনটি রিডিউসারের কাছে পাঠানো
console.log('Next State:', store.getState());
return result;
};
// Reducer
const reducer = (state = {}, action) => {
switch (action.type) {
case 'INCREMENT':
return { count: (state.count || 0) + 1 };
default:
return state;
}
};
// Store তৈরি এবং middleware যোগ করা
const store = createStore(reducer, applyMiddleware(logger));
// অ্যাকশন পাঠানো
store.dispatch({ type: 'INCREMENT' });
Redux Middleware-এর জনপ্রিয় উদাহরণ
-
Redux Thunk
- অ্যাসিঙ্ক্রোনাস অ্যাকশন হ্যান্ডল করতে ব্যবহৃত হয়।
- ফাংশনকে অ্যাকশন হিসেবে ডিসপ্যাচ করার অনুমতি দেয়। ইনস্টলেশন:
npm install redux-thunk
ব্যবহার:
import thunk from 'redux-thunk';
const fetchData = () => {
return async dispatch => {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
dispatch({ type: 'FETCH_SUCCESS', payload: data });
};
};
const store = createStore(reducer, applyMiddleware(thunk));
store.dispatch(fetchData());
-
Redux Saga
- Redux অ্যাকশনগুলোর কার্যক্রম আরও সুন্দরভাবে পরিচালনা করতে ব্যবহৃত হয়।
- JavaScript Generator ব্যবহার করে অ্যাসিঙ্ক্রোনাস কার্যক্রম সম্পন্ন করে।
Middleware ব্যবহারের গুরুত্বপূর্ণ বিষয়
- Middleware-এর ক্রম (order) গুরুত্বপূর্ণ। প্রথমে যে middleware যোগ করা হয় সেটি প্রথমে কাজ করবে।
-
next(action)
কল না করলে অ্যাকশনটি স্টপ হয়ে যাবে এবং পরবর্তী middleware বা reducer-এ পৌঁছাবে না।
Top comments (0)