मैं एक वर्चुअल-डोम मॉड्यूल का प्राथमिक लेखक हूं, इसलिए मैं आपके सवालों का जवाब देने में सक्षम हो सकता हूं। वास्तव में 2 समस्याएं हैं जिन्हें यहां हल करने की आवश्यकता है
- मैं पुन: रेंडर कब करूं? उत्तर: जब मैं देखता हूं कि डेटा गंदा है।
- मैं कुशलता से फिर से कैसे प्रस्तुत करूं? उत्तर: वास्तविक DOM पैच उत्पन्न करने के लिए वर्चुअल DOM का उपयोग करना
प्रतिक्रिया में, आपके प्रत्येक घटक में एक स्थिति होती है। यह राज्य एक अवलोकनीय की तरह है जो आपको नॉकआउट या अन्य MVVM स्टाइल लाइब्रेरी में मिल सकता है। अनिवार्य रूप से, रिएक्ट को पता है कि दृश्य को फिर से कब प्रस्तुत करना है क्योंकि यह देखने में सक्षम है कि यह डेटा कब बदलता है। डर्टी चेकिंग वेधशालाओं की तुलना में धीमी होती है क्योंकि आपको डेटा को एक नियमित अंतराल पर प्रदूषित करना चाहिए और डेटा संरचना के सभी मूल्यों की पुनरावृत्तिपूर्वक जांच करनी चाहिए। तुलना करके, राज्य पर एक मूल्य निर्धारित करने से एक श्रोता को संकेत मिलेगा कि कुछ राज्य बदल गया है, इसलिए रिएक्ट बस राज्य में परिवर्तन की घटनाओं को सुन सकता है और पुन: प्रतिपादन को कतारबद्ध कर सकता है।
वर्चुअल DOM का उपयोग DOM के कुशल री-रेंडरिंग के लिए किया जाता है। यह वास्तव में आपके डेटा को गंदा करने से संबंधित नहीं है। आप गंदे जाँच के साथ या बिना एक आभासी डोम का उपयोग करके फिर से प्रस्तुत कर सकते हैं। आप सही हैं कि दो आभासी पेड़ों के बीच अंतर की गणना करने में कुछ ओवरहेड है, लेकिन आभासी डोम अंतर यह समझने के बारे में है कि डोम में अपडेट करने की आवश्यकता है या नहीं और आपका डेटा बदल गया है या नहीं। वास्तव में, अलग एल्गोरिथ्म एक गंदा चेकर है, लेकिन इसका उपयोग यह देखने के लिए किया जाता है कि डोम इसके बजाय गंदा है या नहीं।
हम केवल आभासी पेड़ को फिर से प्रस्तुत करने का लक्ष्य रखते हैं जब राज्य बदलता है। इसलिए यह देखने के लिए कि राज्य बदल गया है या नहीं, पुन: रेंडरर्स को रोकने के लिए एक कारगर तरीका है, जिसके कारण बहुत सारे अनावश्यक पेड़ अलग हो जाते हैं। अगर कुछ नहीं बदला है, तो हम कुछ नहीं करते हैं।
एक आभासी डोम अच्छा है क्योंकि यह हमें अपना कोड लिखने की सुविधा देता है जैसे कि हम पूरे दृश्य को फिर से प्रस्तुत कर रहे थे। पर्दे के पीछे हम एक पैच ऑपरेशन की गणना करना चाहते हैं जो डोम को अपडेट करता है कि हम कैसे उम्मीद करते हैं। इसलिए जबकि आभासी DOM भिन्न / पैच एल्गोरिदम शायद इष्टतम समाधान नहीं है , यह हमें हमारे अनुप्रयोगों को व्यक्त करने का एक बहुत अच्छा तरीका देता है। हम बस वही घोषित करते हैं जो हम चाहते हैं और रिएक्ट / वर्चुअल-डोम काम करेगा कि आपके दृश्य को इस तरह कैसे बनाया जाए। हमें मैन्युअल DOM हेरफेर करने की ज़रूरत नहीं है या पिछले DOM राज्य के बारे में भ्रमित नहीं होना चाहिए। हमें पूरे दृश्य को फिर से प्रस्तुत करने की आवश्यकता नहीं है, जो इसे पैच करने की तुलना में बहुत कम कुशल हो सकता है।