DEV Community

RSM Academy BD
RSM Academy BD

Posted on

Redux Middleware সম্পর্কে বিস্তারিত আলোচনা

Redux Middleware কী?

Redux Middleware হলো একটি ফাংশন বা লেয়ার যা Redux-এর dispatch এবং reducer-এর মধ্যে কাজ করে। এটি অ্যাকশনগুলোকে প্রক্রিয়াজাত করার আগে বা পরে নির্দিষ্ট কাজ করতে দেয়।

Middleware-এর মূল উদ্দেশ্য:

  1. অ্যাসিঙ্ক্রোনাস ডেটা হ্যান্ডল করা (যেমন API কল)।
  2. অ্যাকশনগুলোর উপর লগিং বা অন্যান্য প্রক্রিয়া সম্পন্ন করা।
  3. Redux Store-এ সরাসরি পরিবর্তন আনার আগে প্রয়োজনীয় চেক বা ফিল্টারিং করা।

Middleware-এর কাজ করার ধরণ

Middleware তিনটি প্রধান স্টেপে কাজ করে:

  1. Redux Store থেকে getState ফাংশনের মাধ্যমে বর্তমান স্টেট পাওয়া।
  2. dispatch ফাংশনের মাধ্যমে অ্যাকশন পাস করা।
  3. এগিয়ে যাওয়ার জন্য next() ফাংশন কল করা।

Middleware ব্যবহার করার সুবিধা

  1. অ্যাসিঙ্ক্রোনাস অ্যাকশন হ্যান্ডলিং: API থেকে ডেটা ফেচ বা অন্য কোনো অ্যাসিঙ্ক্রোনাস কাজ সহজে করা যায়।
  2. লগিং: Redux অ্যাকশন ও স্টেট পরিবর্তনের লগ রাখা।
  3. কাস্টম প্রসেসিং: অ্যাকশন প্রসেস করার আগে বা পরে অতিরিক্ত কাজ যোগ করা।
  4. ডিবাগিং: Redux স্টেটে সমস্যা হলে ডিবাগিং সহজ হয়।

Middleware তৈরির ফর্ম্যাট

Middleware একটি ফাংশন যা এই ফর্ম্যাটে লেখা হয়:

const exampleMiddleware = store => next => action => {
  console.log("Middleware Triggered:", action);
  next(action); // অ্যাকশনটি পরবর্তী middleware বা reducer-এ পাঠানো
};
Enter fullscreen mode Exit fullscreen mode

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' });
Enter fullscreen mode Exit fullscreen mode

Redux Middleware-এর জনপ্রিয় উদাহরণ

  1. Redux Thunk
    • অ্যাসিঙ্ক্রোনাস অ্যাকশন হ্যান্ডল করতে ব্যবহৃত হয়।
    • ফাংশনকে অ্যাকশন হিসেবে ডিসপ্যাচ করার অনুমতি দেয়। ইনস্টলেশন:
   npm install redux-thunk
Enter fullscreen mode Exit fullscreen mode

ব্যবহার:

   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());
Enter fullscreen mode Exit fullscreen mode
  1. Redux Saga
    • Redux অ্যাকশনগুলোর কার্যক্রম আরও সুন্দরভাবে পরিচালনা করতে ব্যবহৃত হয়।
    • JavaScript Generator ব্যবহার করে অ্যাসিঙ্ক্রোনাস কার্যক্রম সম্পন্ন করে।

Middleware ব্যবহারের গুরুত্বপূর্ণ বিষয়

  • Middleware-এর ক্রম (order) গুরুত্বপূর্ণ। প্রথমে যে middleware যোগ করা হয় সেটি প্রথমে কাজ করবে।
  • next(action) কল না করলে অ্যাকশনটি স্টপ হয়ে যাবে এবং পরবর্তী middleware বা reducer-এ পৌঁছাবে না।

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay