Kodokon kodokon.com

कंपोज़िशन: children और कंपोनेंट में विभाजन

children prop से पुन: उपयोग योग्य कंटेनर कंपोनेंट बनाएँ और अपनी स्क्रीनों को स्पष्ट ज़िम्मेदारियों में विभाजित करें।

6 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

कुछ कंपोनेंट अपनी सामग्री पहले से नहीं जानते: एक कार्ड, एक मोडल विंडो, एक लेआउट। React इसे विशेष children prop से हल करता है: किसी कंपोनेंट के खुलने और बंद होने वाले टैग के बीच जो कुछ भी आप रखते हैं वह उसे सौंप दिया जाता है, जहाँ चाहे वहाँ डालने के लिए तैयार। कंटेनर फ़्रेम संभालता है, कॉलर सामग्री देता है।

JSX
function Card({ children }) {
  return <section className="card">{children}</section>;
}

function App() {
  return (
    <Card>
      <h2>Invoice #1024</h2>
      <p>Amount: €49.90</p>
    </Card>
  );
}
Card किसी भी सामग्री को यह जाने बिना कि वह क्या है फ़्रेम करता है।

जब एक ही स्लॉट पर्याप्त नहीं होता, तो JSX को नामित props के माध्यम से पास करें: एक शीर्षक, एक फ़ुटर, एक एक्शन बार। एक prop किसी भी अन्य मान की तरह एक React एलिमेंट प्राप्त कर सकता है। आपको कई “स्लॉट” मिलते हैं, प्रत्येक स्पष्ट रूप से नामित।

JSX
function Modal({ title, footer, children }) {
  return (
    <div className="modal">
      <header>{title}</header>
      <div className="modal-body">{children}</div>
      <footer>{footer}</footer>
    </div>
  );
}
तीन अलग स्लॉट: title, children, और footer।

कंपोज़िशन विभाजन का भी मार्गदर्शन करता है। एक कंपोनेंट की एक पहचानी जा सकने वाली ज़िम्मेदारी होनी चाहिए: एक उपयोगकर्ता पंक्ति दिखाना, एक सूची का लेआउट बनाना। जैसे ही कोई कंपोनेंट कई भूमिकाएँ जमा कर लेता है, उप-कंपोनेंट निकालें: प्रत्येक छोटा हो जाता है, परखने में आसान, और कहीं और पुन: उपयोग योग्य।

JSX
function UserList({ users }) {
  return (
    <ul>
      {users.map((user) => (
        <UserRow key={user.id} user={user} />
      ))}
    </ul>
  );
}

function UserRow({ user }) {
  return (
    <li>
      <strong>{user.name}</strong> - {user.email}
    </li>
  );
}
प्रत्येक कंपोनेंट एक ही ज़िम्मेदारी रखता है।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. एक कंपोनेंट का children prop क्या प्राप्त करता है?
    • एक ही फ़ाइल में घोषित उसके चाइल्ड कंपोनेंट की सूची
    • इसके खुलने और बंद होने वाले टैग के बीच रखी गई हर चीज़
    • पैरेंट कंपोनेंट द्वारा नीचे पास किए गए props
  2. क्या आप children के अलावा किसी अन्य prop में JSX पास कर सकते हैं?
    • हाँ, एक React एलिमेंट किसी भी अन्य मान की तरह एक मान है
    • नहीं, केवल children prop JSX स्वीकार करता है
    • हाँ, पर केवल HTML युक्त एक स्ट्रिंग के रूप में
  3. कौन-सा संकेत सबसे विश्वसनीय रूप से बताता है कि एक कंपोनेंट को विभाजित किया जाना चाहिए?
    • यह कोड की बीस पंक्तियों से अधिक है
    • यह एक से अधिक useState का उपयोग करता है
    • यह अपने render में कई अलग ज़िम्मेदारियों को जोड़ता है