4.2 DOM with refs
Welcome to React Next Documentation Bangla
Manipulating DOM with Refs
React সাধারণত নিজেই DOM ম্যানেজ করে। যখনই কোনো state পরিবর্তন হয়, React তার virtual DOM ব্যবহার করে সেই পরিবর্তনগুলো নির্দিষ্টভাবে ওয়েব পেজে আপডেট করে। কিন্তু কিছু কিছু ক্ষেত্রে আমাদের সরাসরি DOM এর কোনো নির্দিষ্ট এলিমেন্টে কাজ করতে হয়, যেখানে React স্বয়ংক্রিয়ভাবে কিছু করতে পারে না। যেমন:
- কোনো ইনপুট ফিল্ডে সরাসরি ফোকাস দেওয়া: কোনো নির্দিষ্ট ইনপুট বক্সে ইউজার সরাসরি টাইপ করতে পারে, সেজন্য আমরা সরাসরি ফোকাস দিতে চাই।
- স্ক্রল পজিশন কন্ট্রোল করা: আমরা পেজের কোনো বিশেষ স্থানে স্ক্রল করতে চাই, যেটা React স্বয়ংক্রিয়ভাবে করে না।
- এলিমেন্টের মাপ বা পজিশন মাপা: আমরা জানতে চাই কোনো DOM এলিমেন্টের সঠিক দৈর্ঘ্য বা প্রস্থ।
এসব ক্ষেত্রে useRef হুকটি ব্যবহার করে আমরা সরাসরি DOM মডিফাই করতে পারি। useRef হলো React-এর একটি বিশেষ হুক, যা আমাদের DOM এ সরাসরি রেফারেন্স রাখার সুবিধা দেয়। নিচে, আমরা একে ধাপে ধাপে প্রয়োগের প্রক্রিয়া আলোচনা করবো।
DOM মডিফাই করার স্টেপগুলো
Importing useRef from React
প্রথমেই useRef হুকটিকে React থেকে ইম্পোর্ট করতে হবে, কারণ এটি React-এর বিল্ট-ইন একটি ফাংশন, বাইরের কোনো লাইব্রেরি নয়।
Creating a Ref Inside the Component
এরপর আমাদের কম্পোনেন্টের ভেতর একটি রেফ তৈরি করতে হবে। রেফ একটি বিশেষ ধরনের অবজেক্ট যা current নামের একটি প্রপার্টি ধারণ করে। এই current এর মধ্যেই DOM এলিমেন্টের রেফারেন্স থাকবে। প্রথমে আমরা myRef নামে একটি রেফ তৈরি করলাম এবং এটি null দিয়ে ইনিশিয়ালাইজ করলাম।
এখানে null দিয়ে শুরু করায় বোঝায় যে রেফারেন্সটি তৈরি হয়েছে, কিন্তু এখনো কোনো DOM এলিমেন্টকে এটি নির্দেশ করছে না।
Attaching the Ref to a DOM Element
এখন আমাদের তৈরি করা myRef রেফারেন্সটিকে একটি নির্দিষ্ট DOM এলিমেন্টে অ্যাটাচ করতে হবে, যেন আমরা সরাসরি সেই DOM এলিমেন্টটিতে কাজ করতে পারি। এজন্য আমরা ref অ্যাট্রিবিউট দিয়ে myRef যুক্ত করবো আমাদের কাঙ্ক্ষিত HTML ট্যাগে।
এখানে myRef রেফারেন্সটি div এলিমেন্টের সাথে সংযুক্ত হলো। এখন myRef রেফারেন্সটি সরাসরি এই div এলিমেন্টটিতে প্রবেশ করতে পারবে।
Step 4: Modifying the DOM in an Event Handler
আমরা এবার myRef রেফারেন্সটি ব্যবহার করে div এলিমেন্টটিতে সরাসরি কাজ করবো। যেমন, div এর টেক্সট পরিবর্তন করতে আমরা একটি handleChangeText নামে ফাংশন তৈরি করবো। ফাংশনটির ভেতরে myRef.current দিয়ে সরাসরি DOM এলিমেন্টে নতুন টেক্সট সেট করা সম্ভব হবে।
এখানে myRef.current হলো সেই div এলিমেন্টের রেফারেন্স, যেখানে আমরা .innerText ব্যবহার করে নতুন টেক্সট সেট করছি।
Full Code Example
পুরো কোডটি একত্রে দেখতে নিচের উদাহরণটি দেখা যেতে পারে, যেখানে আমরা একটি div এলিমেন্টের টেক্সট রেফারেন্সের মাধ্যমে পরিবর্তন করছি।
এখানে যখন আমরা "টেক্সট বদলাও" বাটনে ক্লিক করি, তখন handleChangeText ফাংশনটি কল হয়। ফাংশনটি myRef রেফারেন্সের current প্রপার্টি ব্যবহার করে div এর innerText পরিবর্তন করে। অর্থাৎ, myRef এর মাধ্যমে আমরা সরাসরি DOM এ প্রবেশ করে সেই div এর টেক্সট পরিবর্তন করতে পারলাম।
এভাবে useRef ব্যবহার করে DOM ম্যানিপুলেশন সহজে করা যায়, যেখানে React স্বয়ংক্রিয়ভাবে কিছু করতে পারে না।