state बदलने पर React component function दोबारा चलाता है ताकि elements का नया पेड़ बने, फिर उसकी तुलना पिछले पेड़ से करता है। वह node के type और keys की तुलना जगह दर जगह करता है: एक ही type का मतलब है React वहीं props अपडेट कर देगा, अलग type का मतलब है पुराना subtree हटाकर नया लगाया जाएगा। इसके बाद जो कम से कम बदलाव बनते हैं, सिर्फ वही असली DOM पर commit होते हैं।
इंटरव्यूअर यह क्यों पूछते हैं
यह उन लोगों को अलग करता है जिन्होंने hook का syntax रट लिया है उनसे जो उसके नीचे का model समझते हैं। इंटरव्यूअर सुनना चाहते हैं कि आप जानते हैं कि render करना DOM पर commit करने जैसा नहीं है, कि element का type और key ही diff चलाते हैं, और कि इसी से वे असली bugs समझ आते हैं जैसे पेड़ में component के जगह बदलने पर state का उड़ जाना। इससे memoization और performance पर आगे के सवाल भी खुलते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- अपने पहले ही वाक्य में render चरण को commit चरण से अलग करें।
- diff के नियम समझाएं: एक ही type वहीं अपडेट, अलग type पर दोबारा mount।
- बताएं कि keys क्या करती हैं और lists में वे क्यों मायने रखती हैं।
- किसी असली नतीजे पर उतरें, जैसे subtree दोबारा mount होने पर state का चले जाना।
उदाहरण जवाब
तो जब state बदलती है, React component function को फिर से बुलाता है, और उससे उसे elements का नया पेड़ मिलता है। वह render चरण है, और अब तक DOM को छुआ भी नहीं गया। फिर वह नए पेड़ को पुराने के आगे रखकर चलता है। हर जगह पर वह पहले element का type देखता है। अगर type वही है, मान लीजिए div div ही रहा, तो वह मौजूदा DOM node और मौजूदा state रखे रहता है और सिर्फ बदले हुए props patch कर देता है। अगर type अलग है, तो वह पूरा subtree फेंककर नया बनाता है, जिसका मतलब है उसके अंदर की सारी state चली गई। lists के लिए वह सीधी जगह की जगह keys इस्तेमाल करता है, ताकि items दोबारा बने बिना अपनी जगह बदल सकें। फिर जमा हुए सारे बदलाव एक commit दौर में लागू होते हैं। व्यवहार में मुझे इसकी परवाह इसलिए है कि मैंने एक बार ऐसा form debug किया जो हर keystroke पर खुद को reset कर देता था, और वजह यह थी कि parent उसे एक ऐसे conditional के अंदर render कर रहा था जो wrapper element का type बदल देता था। एक बार diff के नियम पता हों तो यह दोपहर भर का नहीं, पांच मिनट का काम है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- एक ही जगह पर element का type बदलने पर component की state का क्या होता है?
- एक ही event handler के अंदर की कई state updates को React कैसे बांधकर चलाता है?
- React Compiler इसमें से क्या बदलता है?
React डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें