mismatch का मतलब है कि server पर बना HTML client के पहले render से मेल नहीं खाता। आम वजहें हैं तारीखें और locale की formatting, random values, render के दौरान window या localStorage पढ़ना, और गलत HTML nesting जिसे browser चुपचाप सुधार देता है। React जो diff दर्ज करता है उसे पढ़कर node ढूंढिए, फिर या तो उस value को किसी effect में ले जाइए ताकि पहला render मेल खाए, या उस हिस्से को सिर्फ client पर render कीजिए।
इंटरव्यूअर यह क्यों पूछते हैं
server rendering करने वाले हर व्यक्ति के लिए hydration की गलतियां एक पड़ाव हैं, और जवाब बताता है कि आपने इसे सच में भेजा है या नहीं। इंटरव्यूअर कंधे उचकाकर suppressHydrationWarning लगा देने की जगह एक व्यवस्थित तरीका चाहते हैं। वे यह भी जांचते हैं कि आपको पता है कि mismatch क्यों मायने रखता है, क्योंकि React उस subtree का server वाला markup फेंक देता है और event handlers गलत nodes पर लगे रह सकते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- mismatch को server के HTML बनाम पहले client render के तौर पर परिभाषित करें।
- आम संदिग्धों को संभावना के क्रम में गिनाएं।
- बताएं कि दर्ज हुए diff से आप उसे कैसे संकरा करते हैं।
- सही हल दें और बताएं कि दबाना कब मंजूर है।
उदाहरण जवाब
पहले मैं गलती को ठीक से पढ़ता हूं, क्योंकि React 19 आपको एक ठीक ठाक diff देता है जो दिखाता है कि कौन सा node अलग था, और आम तौर पर दोषी का नाम बताने के लिए इतना काफी होता है। फिर मैं संदिग्धों पर चलता हूं। समय से जुड़ी कोई भी चीज नंबर एक है, यानी कोई सजी हुई तारीख या कोई सापेक्ष timestamp जो server पर एक सेकंड पर और client पर दूसरे सेकंड पर बना। फिर locale और time zone की formatting, क्योंकि server लगभग हमेशा UTC होता है। फिर किसी component में random ids या Math.random। फिर render के दौरान window, matchMedia या localStorage पढ़ने वाली कोई भी चीज, जो theme toggles के साथ आम है। और आखिर में गलत nesting, जैसे किसी p के अंदर div, जहां browser React के देखने से पहले ही HTML सुधार देता है। हल इस पर निर्भर है कि कौन सी वजह है। सच में सिर्फ client वाली values के लिए मैं server पर एक स्थिर placeholder render करता हूं और असली value किसी effect में सेट करता हूं, या उस टुकड़े को server rendering बंद करके lazy load करता हूं। मैं suppressHydrationWarning सिर्फ timestamp जैसे किसी अकेले पत्ते पर उठाता हूं, किसी wrapper पर कभी नहीं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- hydration mismatch सिर्फ console की चेतावनी से बुरा क्यों है?
- localStorage पढ़ने वाले theme toggle को कैसे संभालेंगे?
- जिस subtree का mismatch हुआ, उसके server वाले HTML का React क्या करता है?
React डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें