React Academy · पाठ

React Portals क्या हैं

createPortal API समझें और जानें कि root div के बाहर रेंडर करना उपयोगी क्यों है

पाठ 1, कुल 4 में से13 चरण

React Portals क्या हैं, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्वागत है

इस पाठ में आप सीखेंगे कि React पोर्टल क्या होते हैं, पैरेंट DOM ट्री के बाहर रेंडर करना क्यों उपयोगी है और createPortal API का उपयोग कैसे करें।

सामान्य React DOM पदानुक्रम

डिफ़ॉल्ट रूप से, प्रत्येक कॉम्पोनेंट अपने पैरेंट के DOM नोड के अंदर रेंडर होता है। पूरा React ऐप आमतौर पर एक `
` के अंदर रहता है। यह तब तक ठीक काम करता है, जब तक आपको किसी मोडल, टूलटिप या ड्रॉपडाउन को `overflow: hidden` वाले पैरेंट से बाहर निकालने की आवश्यकता न हो।

पोर्टल क्या है

**पोर्टल** आपको किसी कॉम्पोनेंट के आउटपुट को किसी अलग DOM नोड में रेंडर करने देता है — ऐसा नोड जो React रूट के बाहर मौजूद हो। कॉम्पोनेंट का React ट्री अपरिवर्तित रहता है; केवल DOM में उसका स्थान बदलता है।
import { createPortal } from 'react-dom';

function Modal({ children }) {
  return createPortal(
    children,
    document.body // render into body, not parent
  );
}

पोर्टल क्यों मौजूद हैं

`overflow: hidden`, `z-index` के स्टैकिंग संदर्भ और पैरेंट पर लगा `transform` जैसे CSS गुण चाइल्ड तत्वों को काट या छिपा सकते हैं। पोर्टल रेंडर किए गए आउटपुट को किसी अलग DOM नोड से जोड़कर इन सीमाओं से बाहर निकल जाते हैं।

इवेंट बबलिंग अब भी काम करती है

हालाँकि पोर्टल का DOM नोड पैरेंट के बाहर होता है, **React इवेंट अब भी बबल होती हैं** — DOM ट्री में नहीं, बल्कि React कॉम्पोनेंट ट्री में। पोर्टल मोडल के अंदर किया गया क्लिक उसके React पैरेंट तक बबल होगा।

पोर्टल लक्ष्य बनाना

आप किसी भी मौजूदा DOM नोड में पोर्टल बना सकते हैं। एक सामान्य तरीका है कि `index.html` में समर्पित `
// index.html
<body>
  <div id="root"></div>
  <div id="modal-root"></div>
</body>

// Modal.jsx
createPortal(children, document.getElementById('modal-root'));

पोर्टल का जीवनचक्र उसके React पैरेंट से जुड़ा होता है

पोर्टल अपने पैरेंट कॉम्पोनेंट के माउंट होने पर माउंट होता है और पैरेंट के अनमाउंट होने पर अनमाउंट हो जाता है। React अब भी इसे उसी कॉम्पोनेंट ट्री का हिस्सा मानता है, इसलिए संदर्भ और ref सामान्य रूप से काम करते हैं।

पोर्टल के आर-पार संदर्भ काम करता है

पोर्टल React कॉम्पोनेंट ट्री का हिस्सा बने रहते हैं, इसलिए पोर्टल के ऊपर उपलब्ध कराए गए संदर्भ मान पोर्टल के अंदर भी उपलब्ध रहते हैं। DOM का स्थान React संदर्भ श्रृंखला को प्रभावित नहीं करता।

स्थिति के साथ createPortal का उपयोग

स्थिति वाले चर से पोर्टल की दृश्यता नियंत्रित करें। उसे एक बटन से बदलें, तो पोर्टल की सामग्री document.body में दिखाई देगी, जबकि बटन अपने सामान्य DOM स्थान पर रहेगा।
function App() {
  const [open, setOpen] = useState(false);
  return (
    <div>
      <button onClick={() => setOpen(true)}>Open</button>
      {open && createPortal(
        <div className="overlay">
          <button onClick={() => setOpen(false)}>Close</button>
        </div>,
        document.body
      )}
    </div>
  );
}

सर्वर-साइड रेंडरिंग और पोर्टल

पोर्टल के लिए किसी DOM नोड का मौजूद होना आवश्यक है, इसलिए वे हमेशा क्लाइंट-साइड होते हैं। Next.js या किसी अन्य SSR सेटअप में सुनिश्चित करें कि पोर्टल रेंडर करने वाला कोड केवल ब्राउज़र में ही चले; इसके लिए `useEffect` या माउंट की गई स्थिति की जाँच का उपयोग करें।

त्वरित जाँच

React पोर्टल सामग्री को किसी अलग DOM नोड में रेंडर करते हैं। इससे React कॉम्पोनेंट ट्री का कौन-सा पहलू प्रभावित होता है?

पुनरावलोकन

पोर्टल आपको createPortal() का उपयोग करके किसी भी DOM नोड में React आउटपुट रेंडर करने देते हैं। React ट्री, संदर्भ और इवेंट बबलिंग अप्रभावित रहते हैं। मोडल और टूलटिप के लिए overflow/z-index की सीमाओं से बाहर निकलने हेतु इनका उपयोग करें।

आगे का पाठ

अगला पाठ: **पोर्टल के साथ मोडल कॉम्पोनेंट बनाना** — आप एक पूरी तरह पुनः उपयोग योग्य मोडल बनाएँगे, जो खुलने-बंद होने की स्थिति के प्रबंधन के साथ document.body में पोर्टल होगा।
शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “React Portals क्या हैं” पाठ निःशुल्क है?

हाँ—“React Portals क्या हैं” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“React Portals क्या हैं” में मैं क्या सीखूँगा?

createPortal API समझें और जानें कि root div के बाहर रेंडर करना उपयोगी क्यों है आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“React Portals क्या हैं” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. React Portals क्या हैं
  2. Portals से Modal घटक बनाना
  3. Modals में Focus और Keyboard Trap संभालना
  4. Portals से Tooltips और Dropdown मेनू
← React Academy पर वापस जाएँ