Skill

Redux এর তিনটি মূল নীতি

রিডাক্স (Redux) - Web Development

370

Redux এর কার্যপ্রণালী তিনটি মূল নীতির উপর ভিত্তি করে তৈরি: একক স্টোর, স্টেট অপরিবর্তনীয়তা, এবং স্টেট পরিবর্তন শুধুমাত্র একশন দ্বারা। এই তিনটি নীতিই Redux-এর সাফল্য এবং কার্যকারিতার মূল ভিত্তি। চলুন, একে একে এই তিনটি নীতি বিস্তারিতভাবে দেখি।


১. একক স্টোর (Single Source of Truth)

Redux-এ অ্যাপ্লিকেশনের সমস্ত স্টেট একক স্টোরে (single store) রাখা হয়। এটি মানে যে, অ্যাপ্লিকেশনের সব ধরনের ডাটা এবং স্টেট এক জায়গায় সংরক্ষিত থাকবে এবং অ্যাপ্লিকেশনের যে কোনো অংশ থেকে সেটি অ্যাক্সেস করা যাবে।

  • স্টোরের সুবিধা:
    • অ্যাপ্লিকেশন জুড়ে স্টেটের সামঞ্জস্য বজায় রাখা সহজ হয়।
    • একক স্টোরে সমস্ত স্টেট রাখা হলে, স্টেটের পরিবর্তন ট্র্যাক করা এবং ডিবাগ করা সহজ হয়।
    • কোনো একটি কম্পোনেন্ট যদি স্টেট পরিবর্তন করে, তাহলে সেই পরিবর্তন সম্পূর্ণ অ্যাপ্লিকেশনকে প্রভাবিত করবে না, বরং শুধুমাত্র নির্দিষ্ট অংশগুলোকে আপডেট করবে।

এটি Redux-এর অন্যতম শক্তিশালী দিক, কারণ এটি স্টেট ম্যানেজমেন্টকে সুসংগঠিত এবং একক জায়গায় সীমাবদ্ধ করে।


২. স্টেট অপরিবর্তনীয়তা (State is Read-Only)

Redux অনুযায়ী, স্টেট পরিবর্তনযোগ্য নয়। এটি মানে যে, স্টেট সরাসরি পরিবর্তন করা যাবে না। যখন স্টেট পরিবর্তন করতে হয়, তখন একটি অ্যাকশন ডিসপ্যাচ (dispatch) করতে হবে। এই অ্যাকশনটি রিডিউসার (reducer) দ্বারা গ্রহণ করা হবে, যা স্টেটের একটি নতুন কপি তৈরি করবে।

  • অপরিবর্তনীয় স্টেটের সুবিধা:
    • স্টেটের আগের মান সংরক্ষিত থাকে, যা ডিবাগিং এবং ট্র্যাকিং সহজ করে।
    • স্টেট পরিবর্তনের ইতিহাস রাখতে সহায়তা করে, যাতে পরবর্তীতে পরিবর্তনগুলো পর্যবেক্ষণ করা যায়।
    • স্টেটের পূর্বানুমানযোগ্যতা বজায় থাকে, কারণ যখনই স্টেট পরিবর্তিত হবে, তা কেবলমাত্র অ্যাকশন দ্বারা হবে এবং নতুন স্টেটের মান স্পষ্টভাবে জানা যাবে।

এটি Redux-এর একটি গুরুত্বপূর্ণ নীতি, যা স্টেট পরিবর্তনের ওপর নিয়ন্ত্রণ রাখে এবং অ্যাপ্লিকেশনটির আচরণ সহজে বোঝা যায়।


৩. স্টেট পরিবর্তন শুধুমাত্র একশন দ্বারা (Changes are Made with Pure Functions)

Redux-এ স্টেট পরিবর্তনের জন্য একমাত্র মাধ্যম হলো একশন। একশন ডিসপ্যাচ (dispatch) করার মাধ্যমে রিডিউসার ফাংশন স্টেটের নতুন মান তৈরি করে। রিডিউসার ফাংশন একটি পিউর ফাংশন (Pure Function) হতে হবে, যা একই ইনপুটে সব সময় একই আউটপুট দেয় এবং কোনো বাহ্যিক অবস্থা পরিবর্তন করে না। এটি মানে যে, রিডিউসার কখনোই সরাসরি স্টেট পরিবর্তন করবে না বা বাহ্যিক ডেটা ম্যানিপুলেট করবে না। শুধু নতুন স্টেট রিটার্ন করবে।

  • পিউর ফাংশনের সুবিধা:
    • স্টেট পরিবর্তন সম্পূর্ণরূপে নির্ধারিত এবং পূর্বানুমানযোগ্য থাকে।
    • এটি অ্যাপ্লিকেশনটির ডিবাগিংকে আরও সহজ করে তোলে, কারণ ফাংশনটি কোন বাইরের নির্ভরতা বা পার্শ্বপ্রতিক্রিয়া সৃষ্টি করে না।
    • একাধিক রিডিউসার একসাথে কাজ করতে পারে, যেখানে প্রতিটি রিডিউসার একটি নির্দিষ্ট স্টেট ফিল্ডে পরিবর্তন ঘটায়।

Redux-এ স্টেট পরিবর্তনের একমাত্র উপায় হলো একশন ডিসপ্যাচ করা এবং রিডিউসারের মাধ্যমে নতুন স্টেট তৈরি করা।


সারাংশ

Redux-এর তিনটি মূল নীতি হলো:

  1. একক স্টোর (Single Source of Truth): অ্যাপ্লিকেশনের সমস্ত স্টেট একটি কেন্দ্রীয় স্টোরে সংরক্ষিত হয়।
  2. স্টেট অপরিবর্তনীয়তা (State is Read-Only): স্টেট সরাসরি পরিবর্তন করা যায় না, এবং পরিবর্তন কেবল অ্যাকশন দ্বারা ঘটতে পারে।
  3. স্টেট পরিবর্তন শুধুমাত্র একশন দ্বারা (Changes are Made with Pure Functions): স্টেট পরিবর্তন পিউর ফাংশন দ্বারা পরিচালিত হয়, যেখানে রিডিউসার কেবল নতুন স্টেট রিটার্ন করে, স্টেট পরিবর্তন করে না।

এই তিনটি নীতি মিলে Redux-কে একটি কার্যকর, পূর্বানুমানযোগ্য, এবং স্কেলযোগ্য স্টেট ম্যানেজমেন্ট টুল হিসেবে প্রতিষ্ঠিত করেছে।

Content added By

Redux-এ Single Source of Truth মানে হল যে, অ্যাপ্লিকেশনের সমস্ত স্টেট একটি একক স্থান (স্টোর) এ সংরক্ষিত থাকে। এটি একটি গুরুত্বপূর্ণ ধারণা যা Redux-এর কেন্দ্রীয় স্টেট ম্যানেজমেন্ট পদ্ধতিকে সুসংগঠিত এবং পরিচালনা করা সহজ করে তোলে। স্টেটের সমস্ত তথ্য একক স্টোরে রাখা হয়, যা অ্যাপ্লিকেশনের বিভিন্ন অংশের মধ্যে শেয়ার করা হয়। এর ফলে স্টেটের সঠিকতা এবং সামঞ্জস্য বজায় রাখা সহজ হয়।


Single Source of Truth এর বৈশিষ্ট্য

  • কেন্দ্রীভূত স্টেট: Redux অ্যাপ্লিকেশনের সমস্ত স্টেটকে একটি কেন্দ্রীভূত স্টোরে রাখতে প্রাধান্য দেয়। অর্থাৎ, অ্যাপ্লিকেশনের বিভিন্ন অংশে ছড়িয়ে ছিটিয়ে থাকা আলাদা আলাদা স্টেট একত্রিত হয়ে একটি একক স্টোরে রাখা হয়।
  • স্টেটের অ্যাক্সেস: এই একক স্টোর থেকে অ্যাপ্লিকেশনের যেকোনো কম্পোনেন্ট সহজে স্টেট অ্যাক্সেস করতে পারে। যেহেতু স্টেট একটি একক জায়গায় রাখা হয়, তাই এটি অ্যাপ্লিকেশনের অন্যান্য অংশের সাথে আরও সহজে সিঙ্ক্রোনাইজ করা যায়।
  • স্টেটের নিয়ন্ত্রণ: অ্যাপ্লিকেশনের স্টেট পরিচালনা এবং পরিবর্তন একমাত্র স্টোরের মাধ্যমে করা হয়, যার ফলে স্টেট পরিবর্তন ও ট্র্যাকিং সহজ হয়।

Single Source of Truth এর সুবিধা

  1. সামঞ্জস্য বজায় রাখা: যখন সমস্ত স্টেট একটি কেন্দ্রীভূত স্টোরে রাখা হয়, তখন স্টেটের মধ্যে কোনো অসমঞ্জস্যতা (inconsistencies) সৃষ্টি হওয়ার সম্ভাবনা কমে যায়। এটি বিশেষভাবে বড় অ্যাপ্লিকেশনগুলিতে কার্যকরী, যেখানে একাধিক কম্পোনেন্ট একে অপরের সাথে ডেটা শেয়ার করে।
  2. স্টেটের সিঙ্ক্রোনাইজেশন: অ্যাপ্লিকেশনের বিভিন্ন অংশ একই স্টোরে স্টেট শেয়ার করে, ফলে কোনো পরিবর্তন স্টোরে হলে সেটি সব কম্পোনেন্টে দ্রুত প্রতিফলিত হয়। এতে স্টেট আপডেট এবং রেন্ডারিং প্রক্রিয়া আরও কার্যকরী হয়ে ওঠে।
  3. ডিবাগিং সহজ: যেহেতু সমস্ত স্টেট একটি কেন্দ্রীভূত স্টোরে রাখা হয়, তাই ডিবাগিং এবং ট্র্যাকিং সহজ হয়। স্টোরে থাকা সমস্ত ডেটা এবং একশনগুলির প্রবাহ বোঝা সহজ হয়, এবং কোনো ত্রুটি বা বাগ দ্রুত খুঁজে পাওয়া সম্ভব হয়।
  4. কোডের সংগঠন: স্টেটের একটি কেন্দ্রীভূত ব্যবস্থার মাধ্যমে অ্যাপ্লিকেশনের কোড আরও পরিষ্কার এবং সংগঠিত থাকে। কম্পোনেন্টগুলোর মধ্যে স্টেট শেয়ারিং এর জন্য একক স্থান ব্যবহার করা হয়, যার ফলে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায়।
  5. স্কেলেবিলিটি: যখন অ্যাপ্লিকেশন বড় হতে থাকে এবং অনেকগুলো ফিচার যোগ করা হয়, তখন Redux স্টেট ম্যানেজমেন্টের কাঠামো অ্যাপ্লিকেশনকে স্কেলযোগ্য এবং রক্ষণাবেক্ষণযোগ্য রাখে। একক স্টোর ব্যবহারের ফলে, আপনি অ্যাপ্লিকেশনের স্টেট পরিবর্তন ও সংগঠিত করতে আরও সহজভাবে কাজ করতে পারেন।

Single Source of Truth এর উদাহরণ

ধরা যাক, একটি টুডু লিস্ট অ্যাপ্লিকেশন তৈরি করছেন। এই অ্যাপ্লিকেশনে একটি টুডু আইটেম যোগ করা এবং ডিলিট করার জন্য আপনি স্টেট পরিচালনা করছেন। Redux ব্যবহার করলে, টুডু আইটেমগুলো একটি কেন্দ্রীভূত স্টোরে রাখা হবে।

  • স্টোর: সমস্ত টুডু আইটেম এখানে থাকবে।
  • কম্পোনেন্ট: টুডু আইটেম দেখতে এবং নতুন টুডু যোগ করতে বিভিন্ন কম্পোনেন্ট ব্যবহার করবেন।
  • স্টেট আপডেট: যখন আপনি একটি নতুন টুডু আইটেম যোগ করবেন, এটি একক স্টোরে যুক্ত হবে এবং সমস্ত কম্পোনেন্টে সিঙ্ক্রোনাইজ হয়ে যাবে।

এই ব্যবস্থায়, টুডু আইটেমের স্টেট একমাত্র কেন্দ্রীভূত স্টোর থেকে ম্যানেজ হবে এবং অ্যাপ্লিকেশনের যেকোনো অংশে এই স্টেট অ্যাক্সেস করা যাবে।


সারাংশ

Redux-এ Single Source of Truth একটি গুরুত্বপূর্ণ নীতি যা অ্যাপ্লিকেশনের স্টেটকে একটি কেন্দ্রীভূত স্থানে রাখে। এটি অ্যাপ্লিকেশনের স্টেটের সঠিকতা, সামঞ্জস্য এবং পরিচালনা সহজ করে তোলে। একক স্টোর ব্যবহারের ফলে অ্যাপ্লিকেশনটি আরও স্কেলযোগ্য, রক্ষণাবেক্ষণযোগ্য, এবং ডিবাগিংয়ের জন্য উপযোগী হয়।

Content added By

Redux এর একটি গুরুত্বপূর্ণ নীতি হলো স্টেট শুধুমাত্র পাঠযোগ্য (State is Read-Only)। এর মানে হলো, Redux-এ অ্যাপ্লিকেশনের স্টেট সরাসরি পরিবর্তন করা যাবে না। স্টেট পরিবর্তন করার জন্য অবশ্যই নির্দিষ্ট একটি প্রক্রিয়া অনুসরণ করতে হবে, যেটি হলো একশন (Action) ডিসপ্যাচ করা। এক্ষেত্রে, স্টেট পরিবর্তন প্রক্রিয়া সম্পূর্ণভাবে একটি নির্দিষ্ট নিয়মে, একটি নির্দিষ্ট প্রক্রিয়ার মাধ্যমে ঘটে, যা স্টেটকে পূর্বানুমানযোগ্য এবং সহজে ডিবাগযোগ্য করে তোলে।


স্টেট শুধুমাত্র পাঠযোগ্য হওয়ার সুবিধা

  1. অপরিবর্তনীয়তা নিশ্চিত করা: স্টেট সরাসরি পরিবর্তন করা যাবে না, তাই একটি নির্দিষ্ট সময়ের মধ্যে স্টেটের পূর্ববর্তী মান সংরক্ষিত থাকে। এটি অ্যাপ্লিকেশনটির পূর্বানুমানযোগ্যতা বাড়ায় এবং ত্রুটি সনাক্তকরণ সহজ করে।
  2. ডিবাগিং সহজ: যেহেতু স্টেট কখনো সরাসরি পরিবর্তন হয় না, আপনি স্টেটের পরিবর্তনগুলো পর্যবেক্ষণ করতে পারেন। একশন এবং রিডিউসারের মাধ্যমে স্টেট পরিবর্তন হয়, ফলে আপনি সহজেই জানবেন কিভাবে এবং কখন স্টেট পরিবর্তন হয়েছে। এই ধারাবাহিকতা ডিবাগিং এবং টেস্টিংকে আরো কার্যকরী করে।
  3. পূর্বানুমানযোগ্য আচরণ: স্টেটের পরিবর্তন কখনোই সরাসরি হয়ে না, বরং একশন ডিসপ্যাচ করার মাধ্যমে ঘটে। এটি স্টেটের আচরণ পূর্বানুমানযোগ্য করে তোলে, কারণ আপনি জানবেন যে স্টেট কেবলমাত্র নির্দিষ্ট একশন এর মাধ্যমে পরিবর্তিত হবে এবং স্টেটের পরিবর্তন শৃঙ্খলাবদ্ধ।

স্টেট পরিবর্তন কীভাবে ঘটে?

Redux-এ স্টেট পরিবর্তন করার জন্য আপনাকে প্রথমে একটি অ্যাকশন (Action) তৈরি করতে হবে, তারপর সেই অ্যাকশনটি ডিসপ্যাচ (Dispatch) করতে হবে। একবার অ্যাকশন ডিসপ্যাচ হলে, এটি রিডিউসার (Reducer)-এ যাবে, যেখানে রিডিউসার স্টেটের পূর্ববর্তী মানের উপর ভিত্তি করে একটি নতুন স্টেট তৈরি করবে এবং সেই নতুন স্টেট স্টোরে সঞ্চিত হবে।

১. অ্যাকশন (Action)

অ্যাকশন হলো একটি JavaScript অবজেক্ট, যা স্টেটের পরিবর্তন কী হতে হবে তা জানায়। এটি সাধারণত একটি type প্রপার্টি এবং অন্যান্য প্রাসঙ্গিক ডেটা ধারণ করে।

const addTodoAction = {
  type: 'ADD_TODO',
  payload: 'Learn Redux'
};

২. রিডিউসার (Reducer)

রিডিউসার একটি ফাংশন যা স্টেট এবং অ্যাকশন গ্রহণ করে এবং নতুন স্টেট রিটার্ন করে। রিডিউসার কখনোই স্টেট সরাসরি পরিবর্তন করবে না, বরং একটি নতুন স্টেট অবজেক্ট তৈরি করে।

function todosReducer(state = [], action) {
  switch (action.type) {
    case 'ADD_TODO':
      return [...state, action.payload];
    default:
      return state;
  }
}

৩. ডিসপ্যাচ (Dispatch)

ডিসপ্যাচ হল অ্যাকশন স্টোরে পাঠানোর প্রক্রিয়া। একবার অ্যাকশন ডিসপ্যাচ করা হলে, তা রিডিউসার দ্বারা গ্রহণ করা হয় এবং নতুন স্টেট তৈরি হয়ে স্টোরে সঞ্চিত হয়।

store.dispatch(addTodoAction);

স্টেট পরিবর্তন কি খারাপ?

Redux-এ স্টেট সরাসরি পরিবর্তন করা না হওয়ার কারণে এটি অপরিবর্তনীয় স্টেট (Immutable State) ধারণা বজায় রাখে। স্টেটের প্রতিটি পরিবর্তন একটি নতুন কপি তৈরি করে, যা বর্তমান স্টেটের সাথে কোনও পরিবর্তন করতে পারে না। এটি কিছুটা অতিরিক্ত কাজ মনে হতে পারে, তবে এর সুবিধাগুলি অসাধারণ:

  • স্টেটের ইতিহাস রাখা: আগের স্টেট হারিয়ে যাওয়ার বদলে, আপনি তার পরিবর্তনগুলি ট্র্যাক করতে পারেন। ফলে আপনি অ্যাপ্লিকেশনটির স্টেটের ইতিহাস রিভিউ করতে পারবেন এবং ভুল বোঝাবুঝি বা বাগ সনাক্ত করতে পারবেন।
  • বাহ্যিক অবস্থা পরিবর্তন থেকে মুক্ত: যেহেতু স্টেট কখনোই সরাসরি পরিবর্তন হয় না, অ্যাপ্লিকেশনটির আচরণ তৃতীয় পক্ষের কোড বা বাহ্যিক অবস্থা দ্বারা প্রভাবিত হবে না। এতে করে অ্যাপ্লিকেশনটির আচরণ অনেক বেশি পূর্বানুমানযোগ্য হয়।
  • পারফরমেন্স অপ্টিমাইজেশন: Immutable স্টেটের মাধ্যমে আপনি অ্যাপ্লিকেশনে পারফরমেন্স অপ্টিমাইজেশন সহজে করতে পারবেন, কারণ পরিবর্তিত স্টেটগুলোকে দ্রুত তুলনা এবং সনাক্ত করা সম্ভব।

সারাংশ

Redux-এর "স্টেট শুধুমাত্র পাঠযোগ্য" নীতি অ্যাপ্লিকেশনের স্টেট পরিবর্তনকে একটি সুসংগঠিত এবং পূর্বানুমানযোগ্য প্রক্রিয়ায় রূপান্তরিত করে। এতে স্টেট সরাসরি পরিবর্তন হয় না, বরং একশন ডিসপ্যাচ করে রিডিউসার স্টেটের নতুন কপি তৈরি করে। এই প্রক্রিয়া অ্যাপ্লিকেশনটি ডিবাগ এবং টেস্ট করার ক্ষেত্রে আরও কার্যকরী করে, এবং স্টেটের পরিবর্তন ইতিহাস রক্ষা করে ত্রুটি সনাক্তকরণকে সহজ করে তোলে।

Content added By

Redux এর আরেকটি গুরুত্বপূর্ণ নীতি হলো Changes are made with Pure Functions, যা নিশ্চিত করে যে স্টেটের পরিবর্তন শুধুমাত্র পিউর ফাংশন (Pure Functions) দ্বারা ঘটবে। এটি স্টেট পরিবর্তনের প্রক্রিয়াকে আরও নির্ভরযোগ্য, পূর্বানুমানযোগ্য এবং ডিবাগযোগ্য করে তোলে। Redux-এ রিডিউসার (Reducer) ফাংশনই স্টেট পরিবর্তনের দায়িত্বে থাকে, এবং এই রিডিউসার পিউর ফাংশন হতে হবে।


পিউর ফাংশন (Pure Function) কী?

একটি পিউর ফাংশন এমন একটি ফাংশন, যা কিছু নির্দিষ্ট ইনপুট পেলে সব সময় একই আউটপুট প্রদান করে এবং তার বাহ্যিক বা গ্লোবাল স্টেটে কোনো প্রভাব ফেলে না। অন্যভাবে বললে, পিউর ফাংশন দুটি মূল বৈশিষ্ট্য রাখে:

  1. একই ইনপুটে একই আউটপুট: ফাংশনটি যখনই একই ইনপুট পায়, তখনই একই আউটপুট দিবে।
  2. বাহ্যিক অবস্থা পরিবর্তন করে না: ফাংশনটি কোনো বাহ্যিক বা গ্লোবাল স্টেট, ভেরিয়েবল বা অবজেক্ট পরিবর্তন করে না। এটি শুধুমাত্র তার ইনপুট প্যারামিটারগুলোর উপর নির্ভরশীল।

Redux-এ রিডিউসার একটি পিউর ফাংশন হিসেবে কাজ করে, কারণ এটি একটি নির্দিষ্ট অ্যাকশন এবং পূর্ববর্তী স্টেট গ্রহণ করে এবং একটি নতুন স্টেট রিটার্ন করে, তবে এটি কখনোই বাহ্যিক স্টেটে পরিবর্তন করে না।


রিডিউসার (Reducer) কী?

রিডিউসার (Reducer) হল একটি পিউর ফাংশন যা একটি নির্দিষ্ট ইনপুট পেলে (যেমন স্টেট এবং অ্যাকশন) একটি নতুন স্টেট রিটার্ন করে। এটি স্টেটের কোনও সরাসরি পরিবর্তন ঘটায় না, বরং একটি নতুন স্টেট অবজেক্ট তৈরি করে, যা পূর্ববর্তী স্টেটের উপর ভিত্তি করে। রিডিউসারকে কখনোই সরাসরি স্টেট পরিবর্তন করার অনুমতি দেয়া হয় না; বরং এটি নতুন একটি স্টেট অবজেক্ট তৈরি করে রিটার্ন করে।


রিডিউসারের কাজের প্রক্রিয়া

  1. স্টেট এবং অ্যাকশন ইনপুট হিসেবে গ্রহণ: রিডিউসার ফাংশন দুটি আর্গুমেন্ট নেয়—একটি হলো পূর্ববর্তী স্টেট এবং অন্যটি হলো অ্যাকশন, যা একটি JavaScript অবজেক্ট।
  2. নতুন স্টেট তৈরি: রিডিউসার ইনপুট হিসেবে পাওয়া স্টেট এবং অ্যাকশন ভিত্তিতে একটি নতুন স্টেট তৈরি করে। এটি পূর্ববর্তী স্টেটের উপর কোনো পরিবর্তন না করে বরং নতুন কপি তৈরি করে।
  3. ফাংশনের নির্ধারিত আচরণ: রিডিউসার সবসময় একটি নতুন স্টেট রিটার্ন করবে। যদি অ্যাকশনটি স্টেট পরিবর্তন না করার নির্দেশ দেয় (যেমন ডিফল্ট অ্যাকশন), তাহলে রিডিউসার পূর্বের স্টেটকে রিটার্ন করবে।

রিডিউসারের উদাহরণ

ধরা যাক, আমাদের একটি অ্যাপ্লিকেশন যেখানে টুডু লিস্ট তৈরি করতে হবে। এই টুডু লিস্টের জন্য একটি রিডিউসার থাকবে যেটি টুডু আইটেমগুলো স্টোরে রাখবে এবং নতুন আইটেম যোগ করার জন্য স্টেট আপডেট করবে।

const initialState = {
  todos: []
};

function todosReducer(state = initialState, action) {
  switch (action.type) {
    case 'ADD_TODO':
      return {
        ...state, // পূর্বের স্টেট রক্ষা
        todos: [...state.todos, action.payload] // নতুন টুডু আইটেম যোগ
      };
    default:
      return state; // স্টেট অপরিবর্তিত থাকবে
  }
}

এখানে todosReducer একটি পিউর ফাংশন হিসেবে কাজ করছে:

  • এটি আগের স্টেট এবং অ্যাকশন নিয়ে একটি নতুন স্টেট তৈরি করছে।
  • এটি সরাসরি আগের স্টেট পরিবর্তন করছে না, বরং একটি নতুন কপি তৈরি করছে।

কেন রিডিউসার পিউর ফাংশন হতে হবে?

  1. প্রেডিক্টেবলিটি (Predictability): পিউর ফাংশন কেবল তার ইনপুটের উপর নির্ভরশীল। ফলে, একাধিকবার একই ইনপুট দিলে একই আউটপুট পাওয়া যায়, যা স্টেটের পরিবর্তন পূর্বানুমানযোগ্য এবং ট্র্যাকযোগ্য করে তোলে।
  2. ডিবাগিং সহজ: পিউর ফাংশনগুলির সাহায্যে আপনি সহজে জানবেন স্টেট কিভাবে পরিবর্তিত হচ্ছে। কারণ, স্টেট পরিবর্তন শুধুমাত্র নির্দিষ্ট একশনগুলির মাধ্যমে ঘটবে, যা আপনাকে কোডের মধ্যে কোথাও পরিবর্তন শনাক্ত করতে সহায়তা করবে।
  3. ইমিউটেবল স্টেট: স্টেট পরিবর্তন করার সময় কোনো ধরনের ডেটার সরাসরি পরিবর্তন না করে নতুন কপি তৈরি করার ফলে স্টেটের ইতিহাস রক্ষা করা যায়। এটি পুনরায় ট্র্যাকিং এবং কম্পোনেন্টগুলোর রেন্ডারিং আরো কার্যকর করে তোলে।

পিউর ফাংশন এবং মিউটেবল ফাংশনের মধ্যে পার্থক্য

পিউর ফাংশনমিউটেবল ফাংশন
একই ইনপুটে একই আউটপুট দেয়ইনপুট বা স্টেটের উপর নির্ভর করে পরিবর্তন হতে পারে
বাহ্যিক অবস্থা পরিবর্তন করে নাবাহ্যিক স্টেট পরিবর্তন করতে পারে
সহজে টেস্ট করা যায়টেস্টিং কঠিন হতে পারে কারণ বাহ্যিক পরিবর্তন ঘটাতে পারে

সারাংশ

Redux-এ Changes are made with Pure Functions নীতি স্টেট পরিবর্তন প্রক্রিয়াকে নিয়ন্ত্রিত এবং পূর্বানুমানযোগ্য করে তোলে। রিডিউসার পিউর ফাংশন হিসেবে কাজ করে, যা আগের স্টেট এবং অ্যাকশন গ্রহণ করে একটি নতুন স্টেট তৈরি করে এবং কখনোই সরাসরি স্টেট পরিবর্তন করে না। এই নীতি অ্যাপ্লিকেশনটির ডিবাগিং, টেস্টিং এবং পারফরমেন্স অপ্টিমাইজেশনে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...