component तब दोबारा render होता है जब उसकी अपनी state बदले, जब वह जिस context को इस्तेमाल करता है वह नई value दे, या जब उसका parent दोबारा render होकर उसके लिए नया element बनाए। rendering बस function को बुलाती है और UI का एक विवरण बनाती है। फिर React उसे पिछले tree से diff करता है और सिर्फ वही DOM बदलाव commit करता है जो अलग हैं, तो ज़्यादातर re-renders DOM को छूते ही नहीं।
इंटरव्यूअर यह क्यों पूछते हैं
बहुत से उम्मीदवार यह जाने बिना ही useMemo और useCallback पर पहुंच जाते हैं कि काम शुरू किससे होता है। इंटरव्यूअर सबूत चाहता है कि आप render और commit चरणों पर अलग अलग तर्क कर सकते हैं, कि आप optimize करने से पहले नापते हैं, और कि आपको पता है memoization की भी कीमत है। यह चुपके से यह भी जांचता है कि आपने कभी किसी असली React ऐप को profile किया है या सिर्फ परफॉर्मेंस पर पढ़ा है।
अपना जवाब कैसे स्ट्रक्चर करें
- render के तीनों trigger गिनाएं।
- render चरण को commit चरण से अलग करें।
- समझाएं कि नया object prop DOM का काम कराने की जगह memoization क्यों तोड़ता है।
- बताएं कि कुछ भी बदलने से पहले आप कैसे नापेंगे।
उदाहरण जवाब
तीन चीज़ें इसे चलाती हैं: component में state का अपडेट, वह context value बदलना जिसे वह subscribe करता है, या parent का दोबारा render होना। आखिरी वाली जगह लोग चौंकते हैं, क्योंकि parent का render हर child function दोबारा चलाता है, चाहे उसके props की values बदली हों या नहीं। पर rendering सिर्फ एक element tree बनाती है। React उसे पिछले tree से मिलाता है और DOM में कम से कम बदलाव commit करता है, तो re-render अक्सर सस्ता होता है और DOM को छूता ही नहीं। महंगे मामले बड़े subtrees और render के अंदर भारी गणना हैं। जिस प्रोडक्ट पर मैं था वहां जब एक पेज सुस्त लगा, तो मैंने अंदाज़ा लगाने की जगह React DevTools का profiler खोला, और अपराधी एक ही context निकला जो मौजूदा user और live search string दोनों रखे था, तो हर keystroke पूरा authenticated shell दोबारा render करता था। उसे दो contexts में बांटने से करीब दस लाइनों में ठीक हो गया। memo की तरफ मैं तभी जाता हूं जब profiler बता दे कि कोई खास subtree ही समस्या है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- React.memo असल में कब मदद करता है, और कब वह सिर्फ बोझ है?
- key prop reconciliation के बर्ताव को कैसे बदलता है?
- बहुत बार होने वाले अपडेट के लिए context की जगह आप क्या इस्तेमाल करेंगे?
फुल स्टैक डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें