React Academy · पाठ

बड़ी सूची को Render करने की समस्या

समझिए कि 10,000 DOM nodes को render करने से प्रदर्शन क्यों बुरी तरह गिरता है और virtualization इसे कैसे हल करता है।

पाठ 1, कुल 4 में से12 चरण

बड़ी सूची को Render करने की समस्या, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

10000 सूची-तत्वों को रेंडर करना

मान लीजिए कि आप दस हज़ार आइटम वाली एक सारणी पर मैप करके हर आइटम के लिए एक सूची-तत्व रेंडर करते हैं। रिएक्ट हर बार दस हज़ार DOM नोड बनाएगा, भले ही एक समय में स्क्रीन पर केवल दो-तीन दर्जन ही दिखाई देते हों।

इनमें से अधिकांश नोड स्क्रीन से बाहर और अदृश्य होते हैं, फिर भी ब्राउज़र को उनमें से हर एक को बनाना, उसका लेआउट तय करना और बनाए रखना पड़ता है।

बड़े DOM वृक्षों की ब्राउज़र लेआउट लागत

बड़े DOM वृक्षों की ब्राउज़र में वास्तविक लागत होती है। लेआउट, शैली की पुनर्गणना और मेमोरी, सभी नोडों की संख्या के साथ बढ़ते हैं, इसलिए बहुत बड़ी सूची आरंभिक रेंडर को धीमा करती है और मेमोरी का उपयोग बढ़ाती है।

जब इंजन को हज़ारों नोडों पर नज़र रखकर उनका पुनःप्रवाह करना पड़ता है, तब साधारण इंटरैक्शन भी रुक-रुककर चल सकते हैं।

स्क्रॉल प्रदर्शन में गिरावट

बहुत बड़ी सूची को स्क्रॉल करते समय उपयोगकर्ताओं को समस्या सबसे अधिक महसूस होती है। सामग्री के खिसकने पर ब्राउज़र उसे फिर से पेंट करता है और लेआउट की दोबारा गणना कर सकता है; बहुत अधिक नोड होने पर फ़्रेम दर सहज गति से नीचे गिर जाती है।

इसका परिणाम झटकेदार और धीमा स्क्रॉल होता है, जिससे ऐप का बाकी हिस्सा कितना भी तेज़ क्यों न हो, इंटरफ़ेस अनुत्तरदायी महसूस होता है।

DevTools में नोडों की संख्या मापना

आप ब्राउज़र के DevTools मेमोरी पैनल में इस समस्या की पुष्टि कर सकते हैं, जहाँ पृष्ठ पर मौजूद DOM नोडों की संख्या दिखाई जाती है। हज़ारों नोड बनाने वाली सूची यहाँ स्पष्ट रूप से दिखाई देगी।

अधिक आइटम रेंडर करने पर इस संख्या को तेज़ी से बढ़ते देखना ठोस प्रमाण देता है कि अड़चन DOM का आकार है।

वर्चुअलाइज़ेशन की अवधारणा

वर्चुअलाइज़ेशन, जिसे कभी-कभी विंडोइंग भी कहा जाता है, पूरी सूची के बजाय केवल वर्तमान में दिखाई देने वाले आइटम और एक छोटे बफ़र को रेंडर करता है। स्क्रॉल करते समय दिखाई देने वाले आइटम माउंट किए जाते हैं और दृश्य से बाहर जाने वाले आइटम अनमाउंट किए जाते हैं।

इससे डेटा में कितने भी आइटम हों, सक्रिय DOM छोटा रहता है और DOM का आकार डेटा-समूह के आकार से स्वतंत्र हो जाता है।

दृश्य विंडो की गणना करना

दृश्य विंडो स्क्रॉल की स्थिति, कंटेनर की ऊँचाई और आइटम की ऊँचाई से निकाली जाती है। व्यूपोर्ट की ऊँचाई को आइटम की ऊँचाई से भाग देने पर लगभग पता चलता है कि कितनी पंक्तियाँ समा सकती हैं, और स्क्रॉल ऑफ़सेट बताता है कि वे कौन-सी पंक्तियाँ हैं।

लाइब्रेरी इन संख्याओं का उपयोग यह तय करने के लिए करती है कि किसी भी क्षण आइटम का कौन-सा स्लाइस रेंडर किया जाए।

रिएक्ट-वर्चुअलाइज़्ड बनाम रिएक्ट-विंडो बनाम TanStack वर्चुअल

कई लाइब्रेरी विंडोइंग लागू करती हैं। रिएक्ट-वर्चुअलाइज़्ड सुविधाओं से भरपूर, लेकिन बड़ी है; रिएक्ट-विंडो उसी लेखक द्वारा किया गया छोटा और केंद्रित पुनर्लेखन है; और TanStack वर्चुअल एक आधुनिक हेडलेस विकल्प है।

अधिकांश सूचियों के लिए रिएक्ट-विंडो सरलता और प्रदर्शन का उत्कृष्ट संतुलन देता है, इसलिए यह पाठ्यक्रम इसी पर केंद्रित है।

वर्चुअलाइज़ेशन कब आवश्यक है

जब सूचियाँ लंबी हों—लगभग कई सौ पंक्तियाँ या उससे अधिक—या पंक्तियों में चित्र और नेस्टेड कंपोनेंट अधिक हों, तब वर्चुअलाइज़ेशन लाभ देता है। इन्हीं स्थितियों में DOM का आकार वास्तव में प्रदर्शन को प्रभावित करता है।

अनंत फ़ीड, बड़ी डेटा सारणियाँ और चैट इतिहास ऐसे सामान्य उदाहरण हैं जहाँ विंडोइंग वैकल्पिक न रहकर आवश्यक हो जाती है।

यह कब उपयोगी नहीं है

कुछ दर्जन साधारण आइटम वाली छोटी सूचियों के लिए वर्चुअलाइज़ेशन बिना किसी महत्वपूर्ण लाभ के जटिलता बढ़ाता है। निरपेक्ष स्थिति निर्धारण और मापन की अतिरिक्त लागत से कुल प्रदर्शन और भी खराब हो सकता है।

विंडोइंग को वास्तव में बड़े डेटा-समूहों के लिए रखें; छोटे डेटा-समूहों के लिए साधारण मैप अधिक सरल और पूरी तरह तेज़ है।

लाभ

विंडोइंग के साथ एक लाख आइटम वाली सूची में DOM के अंदर केवल स्क्रीन पर दिखाई देने वाले कुछ आइटम रहते हैं। इसलिए आरंभिक रेंडर तेज़ होता है, मेमोरी का उपयोग कम रहता है और स्क्रॉल सहज होता है।

आप सेटअप में थोड़ी जटिलता के बदले ऐसा प्रदर्शन पाते हैं जो आपके पास मौजूद डेटा की मात्रा पर निर्भर नहीं करता—यही वर्चुअलाइज़ेशन का मुख्य वादा है।

क्विक चेक: वर्चुअलाइज़ेशन कब करें

निर्धारित कीजिए कि वर्चुअलाइज़ेशन कब उपयोगी है।

पुनरावलोकन: बड़ी सूची की समस्या

हज़ारों DOM नोड रेंडर करने से लेआउट की लागत, मेमोरी का उपयोग और स्क्रॉल में झटके बढ़ते हैं। DevTools में नोडों की संख्या देखकर इसकी पुष्टि की जा सकती है। वर्चुअलाइज़ेशन केवल दृश्य विंडो और एक बफ़र को रेंडर करता है, जिससे DOM छोटा रहता है।

रिएक्ट-विंडो, रिएक्ट-वर्चुअलाइज़्ड और TanStack वर्चुअल में एक केंद्रित और हल्का विकल्प है। इसका उपयोग बड़ी या भारी सूचियों के लिए करें और छोटी, सरल सूचियों के लिए इसे छोड़ दें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “बड़ी सूची को Render करने की समस्या” पाठ निःशुल्क है?

हाँ—“बड़ी सूची को Render करने की समस्या” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“बड़ी सूची को Render करने की समस्या” में मैं क्या सीखूँगा?

समझिए कि 10,000 DOM nodes को render करने से प्रदर्शन क्यों बुरी तरह गिरता है और virtualization इसे कैसे हल करता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“बड़ी सूची को Render करने की समस्या” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. बड़ी सूची को Render करने की समस्या
  2. FixedSizeList: हज़ारों Items को Render करना
  3. VariableSizeList: Dynamic Row Heights
  4. Virtualization को Data Fetching के साथ जोड़ना
← React Academy पर वापस जाएँ