React डेवलपर इंटरव्यू सवाल

useEffect की dependency array कैसे काम करती है, और उसमें आम तौर पर क्या गड़बड़ होती है?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

React हर dependency की तुलना पिछले render की उसकी value से Object.is से करता है और तभी effect दोबारा चलाता है जब कोई बदली हो। खाली array का मतलब है mount के बाद एक बार चलो; array बिल्कुल न देने का मतलब है हर render के बाद चलो। गड़बड़ तब होती है जब आप कोई dependency छोड़ देते हैं और कोई बासी value पकड़ लेते हैं, या जब आप ऐसा object या function डाल देते हैं जो हर render में नया बनता है, जिससे effect हमेशा के लिए घूमता रह जाता है।

इंटरव्यूअर यह क्यों पूछते हैं

React के ज्यादातर bugs effects में रहते हैं, इसलिए इंटरव्यूअर टटोलते हैं कि आप closures और render के snapshot समझते हैं या array को कोई जादुई मंत्र मानते हैं। वे सुनना चाहते हैं कि आप lint नियम को चुप नहीं कराते, कि आप बासी closure और अंतहीन loop का फर्क बता सकते हैं, और बेहतर हो कि आप यह भी पूछें कि इस effect का होना जरूरी भी है या नहीं।

अपना जवाब कैसे स्ट्रक्चर करें

  • तुलना समझाएं और बताएं कि effect असल में कब दोबारा चलता है।
  • दो क्लासिक गड़बड़ियां बताएं: बासी closure और render का loop।
  • बताएं कि हर एक को आप कैसे ठीक करते हैं, functional updates, refs या बाहर निकालकर।
  • इस सवाल पर खत्म करें कि effect का वहां होना बनता भी है या नहीं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

React पिछले render की array रखता है और हर item की तुलना Object.is से करता है। अगर सब मेल खाता है तो वह effect छोड़ देता है; अगर कुछ अलग है तो पुराने का cleanup चलाता है और फिर नया चलाता है। पेच यह है कि effect उसी render के props और state को अपने अंदर बंद कर लेता है जिसने उसे बनाया था, तो अगर मैं array में कुछ छोड़ देता हूं तो मुझे एक बासी value मिलती है जो चुपचाप पुरानी पड़ती जाती है। इसका दूसरा पहलू है उसमें कोई object या arrow function डाल देना, क्योंकि वे हर render में नए reference होते हैं, तो effect loop में चलता रहता है। मेरे आम हल हैं functional state updates ताकि मुझे मौजूदा value dependency के तौर पर चाहिए ही न हो, स्थिर चीजों को component से बाहर निकालना, और किसी callback को तभी लपेटना जब उसका dependency होना सच में जरूरी हो। हालांकि ईमानदारी से, मेरा पहला सवाल यही होता है कि इस effect का होना जरूरी है क्या। मैंने जितने effects हटाए हैं उनमें से ज्यादातर derived state गिन रहे थे, जो render के दौरान की सीधी गणना है, या data ला रहे थे जिसकी जगह router या कोई query library थी।

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

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • ऐसे effect को कैसे संभालते हैं जिसे ताजा value चाहिए पर जो उसके बदलने पर दोबारा नहीं चलना चाहिए?
  • आप useLayoutEffect कब इस्तेमाल करेंगे?
  • पहले क्या चलता है, पुराने effect का cleanup या नया effect?

React डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं