2.4 How Rendering Works
Welcome to React Next Documentation Bangla
React রেন্ডারিং প্রসেসের
React-এর রেন্ডারিং প্রসেস এমন একটি বিষয় যা প্রথমবার বুঝতে গেলে অনেকেরই জটিল মনে হতে পারে, তবে এটি অত্যন্ত গুরুত্বপূর্ণ। এটি বুঝলে তুমি বুঝতে পারবে কীভাবে React অ্যাপ্লিকেশনের UI আপডেট হয়, এবং ব্রাউজারে কীভাবে ভিজ্যুয়াল এলিমেন্টগুলি দেখায়। চল আমরা একটু ধীরে ধীরে দেখে নেই কীভাবে এই রেন্ডারিং প্রসেসটি কাজ করে এবং নতুন উদাহরণের সাহায্যে আরও ভালোভাবে বোঝার চেষ্টা করি।
React রেন্ডারিং প্রসেসের ধাপগুলো:
React-এর রেন্ডারিং মূলত তিনটি ধাপে বিভক্ত। এগুলো হলো:
- Rendering Trigger (রেন্ডারিং ট্রিগার হওয়া): কখন এবং কীভাবে রেন্ডারিং শুরু হয়।
- Rendering Phase (রেন্ডারিং ফেজ): React কীভাবে কম্পোনেন্টগুলোকে রেন্ডার করে।
- Commit Phase (কমিট ফেজ): React কীভাবে UI তে পরিবর্তনগুলিকে ব্রাউজারে প্রতিফলিত করে।
Rendering Trigger (রেন্ডারিং ট্রিগার)
React অ্যাপ্লিকেশন যখন প্রথম শুরু হয় বা কোনো আপডেট হয় তখন রেন্ডারিং ট্রিগার হয়। এটি দুটি কারণে হতে পারে:
উদাহরণ:
Initial Render (প্রথমবারের রেন্ডার):
এখানে যখন তুমি অ্যাপ্লিকেশন প্রথমবার রান করবে, তখন ReactDOM.render() কল হবে এবং পুরো কম্পোনেন্ট একবারে রেন্ডার হবে। এটি শুরুতে একবারই ঘটে, যেটাকে initial render বলা হয়। আমাদের উদাহরণে, ExampleComponent প্রথমবার রেন্ডার হবে এবং ব্রাউজারে "Count: 0" দেখাবে।
State Update (স্টেট আপডেট হওয়া):
এখন তুমি যদি Increase Count বোতামটি চাপো, তাহলে setCount মেথডের মাধ্যমে স্টেট পরিবর্তন হবে। প্রতিবার এই স্টেট আপডেট হলে, React পুনরায় ওই কম্পোনেন্টকে রেন্ডার করবে। এটাকেই আমরা re-render বলি।
React জানে যে শুধু স্টেট পরিবর্তন হয়েছে, তাই শুধুমাত্র সেই অংশেই নতুন করে রেন্ডার করা হবে যেখানে পরিবর্তন হয়েছে।
Rendering Phase (রেন্ডারিং ফেজ)
যখন রেন্ডারিং ট্রিগার হয়, React বুঝতে শুরু করে কোথায় কোথায় পরিবর্তন হচ্ছে। এটি করে diffing অ্যালগরিদমের মাধ্যমে।
উদাহরণ:
- প্রথমবারে
ParentComponentরেন্ডার হয় এবং ChildComponent দেখায় না কারণisVisibleএর প্রাথমিক মানfalse। - যখন তুমি
Toggle Child Componentবোতামটি চাপো,isVisibleস্টেট আপডেট হয় এবং তখনChildComponentরেন্ডার হবে।
Recursive Rendering: React যখন একটি কম্পোনেন্টকে রেন্ডার করে, যদি সেই কম্পোনেন্টের মধ্যে অন্য কোনো কম্পোনেন্ট থাকে, তাহলে সেটাও রেন্ডার হবে। এভাবেই রেন্ডারিং প্রসেসটি রিকারসিভলি কাজ করে। উদাহরণ হিসেবে, ParentComponent রেন্ডার হওয়ার পর, যদি isVisible true হয়, তখন ChildComponent রেন্ডার হবে।
Commit Phase (কমিট ফেজ)
রেন্ডারিং ফেজে React শুধু ভার্চুয়াল DOM-এ কাজ করে, এবং কোথায় কোথায় পরিবর্তন হয়েছে তা নির্ধারণ করে। এবার যখন রেন্ডারিং ফেজ শেষ হয়ে যায়, তখন React বাস্তব DOM-এ সেই পরিবর্তনগুলি প্রতিফলিত করে, যেটাকে আমরা commit ফেজ বলি।
উদাহরণ:
- প্রথমবার রেন্ডার হওয়ার সময়
pট্যাগের টেক্সটটি লাল রঙে থাকবে। - যখন তুমি
Change to Blueবোতামটি চাপবে,setColorএর মাধ্যমে স্টেট আপডেট হবে, এবং React ভার্চুয়াল DOM-এ দেখবে যে শুধুমাত্র রঙ পরিবর্তন হয়েছে। এরপর commit ফেজে এসে শুধুমাত্রpট্যাগের রঙ পরিবর্তন হবে, অন্য কোনো DOM নোড পরিবর্তন হবে না।
React জানে কোথায় কোথায় পরিবর্তন হয়েছে এবং শুধুমাত্র সেই অংশগুলিকেই real DOM-এ আপডেট করে।
সবশেষে ব্রাউজার কীভাবে পেইন্ট করে
React যখন commit ফেজ শেষ করে, তখন ব্রাউজার সেই পরিবর্তিত DOM নোডগুলিকে নিয়ে স্ক্রিনে paint করে। যেটাই শেষ দৃশ্য, তুমি ব্রাউজারে যা কিছু দেখতে পাও সেটা মূলত এখানেই ঘটে।
সংক্ষেপে পুরো প্রক্রিয়াটি:
- Triggering: প্রথমবার বা স্টেট আপডেট হলে রেন্ডারিং শুরু হয়।
- Rendering: React বুঝতে পারে কোন কম্পোনেন্ট পরিবর্তিত হয়েছে এবং তার ভেতরে থাকা নেস্টেড কম্পোনেন্টগুলোকেও রেন্ডার করে।
- Commit: React শুধুমাত্র পরিবর্তিত DOM-এ commit করে এবং তারপর ব্রাউজার সেই পরিবর্তিত DOM কে পেইন্ট করে স্ক্রিনে প্রতিফলিত করে।
এখন তুমি যখন React অ্যাপ্লিকেশনের UI আপডেট দেখবে, তখন তোমার ধারণা থাকবে যে এই প্রক্রিয়াটি কীভাবে কাজ করছে।