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

React Context की performance की खासियतें क्या हैं, और आप उसे आधा app दोबारा render करने से कैसे रोकते हैं?

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

छोटा जवाब

provider की value का reference बदलते ही हर consumer दोबारा render होता है, चाहे वह उस value का कोई भी हिस्सा पढ़ता हो, क्योंकि context में कोई selector नहीं होता। तो जो provider हर render पर नया बड़ा object बनाता है, वह हर consumer को लगातार दोबारा render कराता रहेगा। इसे value memoize करके, state और dispatch को अलग अलग contexts में बांटकर, या data को ऐसे बाहरी store में रखकर ठीक कीजिए जिसे consumers selectors के साथ subscribe करें।

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

Context React का सबसे गलत इस्तेमाल होने वाला API है, इसलिए इंटरव्यूअर जानना चाहते हैं कि आपने यह दर्द झेला है या नहीं। वे यह सुनते हैं कि इसमें आंशिक subscription होती ही नहीं, और context के खिलाफ किसी सपाट नियम की जगह व्यावहारिक उपाय। useSyncExternalStore या किसी छोटी store library का जिक्र दिखाता है कि आपको वह मोड़ पता है जहां context सही औजार रह नहीं जाता।

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

  • नियम बताएं: value का कोई भी बदलाव हर consumer को दोबारा render कराता है।
  • वजह समझाएं, कोई selector नहीं और तुलना reference से होती है।
  • हल क्रम से गिनाएं: memoize, फिर बांटें, फिर किसी store पर जाएं।
  • बताएं कि context किस चीज में सच में अच्छा है, जैसे स्थिर config।

उदाहरण जवाब

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

Context पहले एक dependency injection की मशीन है और state manager बहुत बाद में। performance की दिक्कत यह है कि consumers पूरी value को subscribe करते हैं, तो जब provider की value की पहचान बदलती है, उसके नीचे का हर consumer render होता है, वह भी जो सिर्फ एक boolean पढ़ता है। सबसे पहले मैं यह देखता हूं कि provider JSX में ही inline कोई नया object तो नहीं बना रहा, क्योंकि वह हर parent render पर नया reference है और वह बाकी सब कुछ बेकार कर देता है। उसके बाद मैं contexts बांटता हूं, क्योंकि आम तौर पर data बार बार बदलता है और setters कभी बदलते ही नहीं, तो dispatch को अपने अलग context में रखने से ज्यादातर हलचल रुक जाती है। अगर फिर भी मुझे selectors चाहिए, तो मैं context को store मानने का दिखावा छोड़ देता हूं और state को असली store में रखकर useSyncExternalStore या किसी library से subscribe करता हूं ताकि हर component अपना हिस्सा चुन सके। context जिस चीज में बढ़िया बना रहता है वह है स्थिर चीजें: theme, मौजूदा user, कोई locale, कोई client instance। ये लगभग कभी नहीं बदलतीं, तो दोबारा render की लागत बेमानी है।

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

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

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

  • useSyncExternalStore दोबारा render की दिक्कत से कैसे बचता है?
  • एक ही context के providers एक दूसरे के अंदर हों तो क्या होता है?
  • क्या आप form की state के लिए context इस्तेमाल करेंगे? क्यों नहीं?

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

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

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

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

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

GhostPilot पाएं