← Back to React Course | Chapter 3: Components & Props | Lesson 4 of 11

children Prop की जानकारी

children prop हर component का वह special delivery slot है जो भी content आप इसके tags के अंदर रखें उसके लिए।
Syntax
markup
function ComponentName({ children }) {
  return <div>{children}</div>;
}

<ComponentName>
  nested content
</ComponentName>

props.children में क्या होता है

जब भी आप किसी component के tags के अंदर content nest करते हैं, जैसे <Box>Hello</Box>, वह nested content automatically component को props.children के रूप में pass किया जाता है। यह किसी भी component के लिए होता है, आपको इसे set up करने की ज़रूरत के बिना।

Note: Component के अंदर Console.log(props.children) यह exactly देखने का एक quick तरीका है कि क्या pass किया गया।
Warning: अगर आप <Box></Box> लिखें tags के बीच कुछ भी न हो, props.children undefined होगा।

उदाहरण: What props.children Contains

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
    function Box(props) {
      return <div style={{border: "1px solid gray", padding: "8px"}}>{props.children}</div>;
    }
    ReactDOM.createRoot(document.getElementById('root')).render(<Box>Hello from children!</Box>);
  </script>
</body>
</html>

एक Reusable Wrapper बनाना

चूंकि children बस एक normal prop है, यह उन components के लिए ideal है जिनका पूरा काम दूसरे content को wrap करना है, जैसे एक styled panel या एक modal shell। Wrapper को यह जानने की ज़रूरत नहीं कि अंदर क्या है -- यह बस props.children को जहां भी belongs करता है render करता है।

Note: यह pattern असली React apps में ज़्यादातर layout और container components की foundation है।
Warning: अगर आपका wrapper सिर्फ props.children render करता है और कुछ और custom नहीं, सुनिश्चित करें कि यह intentional है -- नहीं तो आप शायद अपनी खुद की markup miss कर रहे हों।

उदाहरण: Building a Reusable Wrapper

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
    function Panel({ children }) {
      return (
        <section style={{background: "#f5f5f5", padding: "12px"}}>
          {children}
        </section>
      );
    }
    function App() {
      return <Panel><h3>Panel Title</h3><p>Panel content.</p></Panel>;
    }
    ReactDOM.createRoot(document.getElementById('root')).render(<App />);
  </script>
</body>
</html>

Children दूसरे Props के साथ

एक component children को regular named props के साथ एक साथ accept कर सकता है -- वे conflict नहीं करते। यह labeled cards या titled sections जैसे components के लिए आम है, जहां कुछ content props के through configure होता है और दूसरा content normally nested होता है।

Note: Function signature में children को अपने दूसरे props के साथ destructure करें: function Card({ title, children })।
Warning: याद रखें children अब भी बस props.children है -- इसे आपके JSX में कहीं explicitly render किया जाना चाहिए, नहीं तो यह नहीं दिखेगा।

उदाहरण: Children Alongside Other Props

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
    function Card({ title, children }) {
      return (
        <div style={{border: "1px solid #ccc", padding: "10px"}}>
          <h4>{title}</h4>
          {children}
        </div>
      );
    }
    function App() {
      return <Card title="Notice"><p>This uses both a prop and children.</p></Card>;
    }
    ReactDOM.createRoot(document.getElementById('root')).render(<App />);
  </script>
</body>
</html>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह उम्मीद करना कि props.children हमेशा एक array होगा -- यह एक single element, string, या undefined हो सकता है।
  2. यह भूल जाना कि एक self-closing component (<Card />) के बिल्कुल कोई children नहीं होते।
  3. children को tags के बीच nest करने के बजाय एक named attribute के रूप में pass करने की कोशिश करना।
चैप्टर सारांश
  • props.children वह content रखता है जो भी एक component के opening और closing tags के बीच nested है।
  • यह automatically काम करता है -- आपको इसे explicitly declare करने की ज़रूरत नहीं।
  • यह commonly wrapper या layout components के लिए use होता है।
  • Children text, एक single element, multiple elements, या बिल्कुल कुछ नहीं हो सकते हैं।
ब्राउज़र सपोर्ट

कोई browser-specific restrictions नहीं -- children एक core React composition feature है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.