keys React को बताती हैं कि नई list का कौन सा element पुरानी list के किस element से मेल खाता है, ताकि वह सिर्फ जगह से मिलान करने की जगह DOM nodes और उनकी state को हिला सके, रख सके या हटा सके। array index सिर्फ स्थिर lists पर चलते हैं। अगर items का क्रम बदले, शुरू में कोई जुड़े या कोई हटे, तो किसी item का index बदल जाता है, React गलत node दोबारा इस्तेमाल कर लेता है, और input की values जैसी state गलत row पर जा गिरती है।
इंटरव्यूअर यह क्यों पूछते हैं
यह शुरुआती सवाल जैसा दिखता है, पर जवाब लोगों को जल्दी अलग कर देते हैं। ज्यादातर कैंडिडेट कहते हैं कि keys performance में मदद करती हैं और वहीं रुक जाते हैं। इंटरव्यूअर सुनना चाहते हैं कि keys पहचान और state बचाने की बात हैं, सिर्फ रफ्तार की नहीं, और कि आप index वाली keys की ठोस गड़बड़ी बता सकते हैं। यह इसकी भी झटपट जांच है कि आपने कोई असली list bug debug किया है या सिर्फ console की चेतावनी हटाई है।
अपना जवाब कैसे स्ट्रक्चर करें
- key को performance का इशारा नहीं, पहचान बताकर परिभाषित करें।
- समझाएं कि diff पुराने और नए children को key से कैसे जोड़ता है।
- क्रम बदली या छांटी गई list पर index वाला ठोस bug बताएं।
- बताएं कि आप key के तौर पर क्या इस्तेमाल करते हैं और किससे बचते हैं।
उदाहरण जवाब
key वह तरीका है जिससे React इस सवाल का जवाब देता है कि क्या यह वही item है जो पिछले render में दिखा था। उसके बिना वह children को जगह से जोड़ता है, तो जब कोई row हिलती है तो React समझता है कि सामग्री बदल गई और उसे हिलाने की जगह मौजूदा node को patch कर देता है। स्थिर key के साथ उसे पता होता है कि item हिला है, वह उसका DOM node और उसकी state रखे रहता है, और क्रम बदल देता है। index का जाल यह है कि index जगह बताता है, item नहीं। मैं इससे एक table पर टकराया जहां हर row में एक checkbox और एक notes field था। दूसरी row हटाइए और उसके नीचे की हर row एक index ऊपर खिसक जाती है, तो React गलत nodes जोड़ देता है और आपकी row में किसी और के notes आ बैठते हैं। यह data का bug लगता है और है key का bug। तो मैं वही स्थिर id इस्तेमाल करता हूं जो data के साथ आती है, आम तौर पर database की id। अगर सच में कोई नहीं है, तो मैं item बनते वक्त एक id बना देता हूं, render के दौरान नहीं, क्योंकि render में बनाने से हर दौर में नई key मिलती है और पूरी list दोबारा mount हो जाती है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- array index को key बनाना कब सच में ठीक है?
- अगर दो भाई बहन elements की key एक जैसी हो तो क्या होता है?
- किसी component की state को जानबूझकर key से कैसे reset करेंगे?
React डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें