ReactJS-এ Controlled এবং Uncontrolled কম্পোনেন্ট দুটি গুরুত্বপূর্ণ ধারণা। এগুলো মূলত ইনপুট ফিল্ড (যেমন input, textarea, select ইত্যাদি) এর স্টেট ম্যানেজমেন্টের পদ্ধতি নির্দেশ করে।
Controlled Components
Controlled Components হল এমন কম্পোনেন্ট যেখানে ইনপুট ফিল্ডের মান React স্টেট দ্বারা নিয়ন্ত্রিত হয়। অর্থাৎ, ইনপুটের মান স্টেটের মধ্যে সঞ্চিত থাকে এবং সেই মান পরিবর্তন করার জন্য React স্টেট আপডেট করা হয়।
একটি controlled কম্পোনেন্টে ইনপুট ফিল্ডের মান সর্বদা React স্টেটে উপস্থিত থাকে এবং onChange ইভেন্ট হ্যান্ডলার ব্যবহার করে এটি পরিবর্তিত হয়।
ব্যবহার:
- ইনপুটের মান React স্টেটে সংরক্ষিত থাকে।
- ইনপুটের পরিবর্তন ঘটানোর জন্য স্টেট আপডেট করা হয়।
উদাহরণ:
import React, { useState } from 'react';
const ControlledForm = () => {
const [value, setValue] = useState('');
const handleChange = (event) => {
setValue(event.target.value); // ইনপুট মান আপডেট করা
};
const handleSubmit = (event) => {
alert('A name was submitted: ' + value);
event.preventDefault();
};
return (
<form onSubmit={handleSubmit}>
<label>
Name:
<input
type="text"
value={value} // ইনপুটের মান React স্টেট থেকে আসছে
onChange={handleChange} // স্টেট আপডেট করার জন্য
/>
</label>
<button type="submit">Submit</button>
</form>
);
};
export default ControlledForm;
এখানে:
- ইনপুটের মান
valueস্টেটে সংরক্ষিত হচ্ছে। onChangeইভেন্ট হ্যান্ডলার ব্যবহার করে ইনপুটের মান পরিবর্তন করা হচ্ছে।- যখন ফর্ম সাবমিট হবে, তখন
valueস্টেট থেকে ইনপুটের মান নেওয়া হবে।
Uncontrolled Components
Uncontrolled Components হল এমন কম্পোনেন্ট যেখানে ইনপুট ফিল্ডের মান React স্টেট দ্বারা নিয়ন্ত্রিত হয় না। এর পরিবর্তে, ইনপুটের মান DOM দ্বারা সরাসরি নিয়ন্ত্রিত হয়, এবং React স্টেটের সাথে এর কোনো সংযোগ থাকে না।
Uncontrolled কম্পোনেন্টে, আপনি ref ব্যবহার করে ইনপুট ফিল্ডের মান অ্যাক্সেস করেন, এবং সাধারণত useRef হুক ব্যবহার করা হয়।
ব্যবহার:
- ইনপুটের মান DOM-এর মাধ্যমে সরাসরি নিয়ন্ত্রিত হয়।
- স্টেট ব্যবহারের প্রয়োজন হয় না, তবে
refব্যবহার করে মান অ্যাক্সেস করা হয়।
উদাহরণ:
import React, { useRef } from 'react';
const UncontrolledForm = () => {
const inputRef = useRef();
const handleSubmit = (event) => {
alert('A name was submitted: ' + inputRef.current.value); // DOM থেকে ইনপুট মান নেওয়া
event.preventDefault();
};
return (
<form onSubmit={handleSubmit}>
<label>
Name:
<input
type="text"
ref={inputRef} // ref দিয়ে ইনপুট ফিল্ড অ্যাক্সেস করা
/>
</label>
<button type="submit">Submit</button>
</form>
);
};
export default UncontrolledForm;
এখানে:
inputRefএকটিrefযা ইনপুট ফিল্ডের DOM এলিমেন্টে পয়েন্ট করছে।- ইনপুটের মান
inputRef.current.valueদিয়ে সরাসরি DOM থেকে নেওয়া হচ্ছে।
Controlled এবং Uncontrolled Components এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Controlled Components | Uncontrolled Components |
|---|---|---|
| স্টেট ব্যবস্থাপনা | React স্টেট দ্বারা ইনপুটের মান নিয়ন্ত্রিত হয়। | DOM দ্বারা ইনপুটের মান নিয়ন্ত্রিত হয়। |
| ইনপুটের মান অ্যাক্সেস | value প্রপ দিয়ে ইনপুটের মান পাওয়া যায়। | ref ব্যবহার করে ইনপুটের মান পাওয়া যায়। |
| অ্যাপ্লিকেশনের বাস্তবায়ন | স্টেট ব্যবস্থাপনা সহজ, তবে বেশি কোড লেখার প্রয়োজন। | সহজ কিন্তু কম ফিচার এবং React স্টেটের সাথে সম্পর্কিত নয়। |
| ফর্ম সাবমিশন | স্টেট থেকে ইনপুটের মান সাবমিট করা হয়। | ref থেকে DOM মান সাবমিট করা হয়। |
কোনটি ব্যবহার করবেন?
- Controlled Components ব্যবহার করা সাধারণত ভাল প্র্যাকটিস, কারণ এতে আপনি ফর্মের মান সম্পূর্ণরূপে React স্টেটে রাখেন, যা আরও পঠনযোগ্য এবং ট্র্যাক করা সহজ। এটি ডাটা ম্যানিপুলেশন, ভ্যালিডেশন এবং অন্যান্য কার্যকলাপে সহায়ক।
- Uncontrolled Components তখন ব্যবহার করা যায় যখন কমপ্লেক্স স্টেট ম্যানেজমেন্টের প্রয়োজন নেই বা সিম্পল UI পরিবর্তন প্রয়োজন। তবে, সাধারণত এটি কম ব্যবহৃত হয় React অ্যাপ্লিকেশনে, কারণ এটি React এর স্টেট ব্যবস্থাপনা থেকে বিচ্ছিন্ন থাকে।
React এর Controlled এবং Uncontrolled কম্পোনেন্ট দুটি ধারণা, আপনি যে পরিস্থিতিতে আছেন তার উপর নির্ভর করে ব্যবহৃত হবে, তবে অধিকাংশ React ডেভেলপার Controlled Components-এ বেশি বিশ্বাস করেন, কারণ এটি অ্যাপ্লিকেশনের অবস্থা (state) আরও সুসংগত এবং পরিচালনাযোগ্য রাখে।
Read more