Changes are made with Pure Functions (রিডুসার ফাংশন দিয়ে পরিবর্তন)

Redux এর তিনটি মূল নীতি - রিডাক্স (Redux) - Web Development

309

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...