ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • this.props.children
    Study/React 2020. 5. 27. 13:25

    this.props.children

     

    모든 컴포넌트의 props 객체는 children이라고 이름된 property를 가진다. 

     

    this.props.children은 컴포넌트의 오프닝과 JSX태그들 클로징 사이에서 모든것을 리턴할 것이다. 

     

    지금까지, <MyComponentClass />같이 당신이 봐온 모든 컴포넌트들은  self-closing tag들이었다. 

    그들은 그럴필요는 없다!

    당신은 <MyComponentClass></MyComponentClass> 라고 적을수도 있고, 이것은 여전히 동작할 것이다. 

     

    this.props.children은 <MyComponentClass></MyComponentClass>사이에서 모든것들을 리턴할것이다.

     

    BigButton.js를 보자.

    Example1에서 <BigButton>의 this.props.children은  “I am a child of BigButton.” 텍스트와 같다.

    Example2에서 <BigButton>의 this.props.children은 <LilButton />컴포넌트와 같다. 

    Example3에서 <BigButton>의 this.props.children는 undefined와 같다. 

     

    만약 컴포넌트가 JSX태그들 사이의 한 child보다 더 많이 가진다면 

    this.props.children는 children들을 배열에 담아 리턴할 것이다. 

     

    그러나 , 만약 컴포넌트가 오직 한 child만 가진다면, 

    this.props.children는 배열에 담지 않고 한 child만 리턴할 것이다. 

     

     

    import React from 'react';
    import { LilButton } from './LilButton';
    
    class BigButton extends React.Component {
      render() {
        console.log(this.props.children);
        return <button>Yo I am big</button>;
      }
    }
    
    
    // Example 1
    <BigButton>
      I am a child of BigButton.
    </BigButton>
    
    
    // Example 2
    <BigButton>
      <LilButton />
    </BigButton>
    
    
    // Example 3
    <BigButton />

     

     

     

    // child갯수에 따라 자동적으로 title 바꾸는 방법

     

    //List.js
    
    import React from 'react';
    
    export class List extends React.Component {
      render() {
        let titleText = `Favorite ${this.props.type}`;
        if (this.props.children instanceof Array) {
        	titleText += 's';
        }
        return (
          <div>
            <h1>{titleText}</h1>
            <ul>{this.props.children}</ul>
          </div>
        );
      }
    }
    // App.js
    
    import React from 'react';
    import ReactDOM from 'react-dom';
    import { List } from './List';
    
    class App extends React.Component {
      render() {
        return (
          <div>
            <List type='Living Musician'>
              <li>Sachiko M</li>
              <li>Harvey Sid Fisher</li>
            </List>
            <List type='Living Cat Musician'>
              <li>Nora the Piano Cat</li>
            </List>
          </div>
        );
      }
    }
    
    ReactDOM.render(
      <App />, 
      document.getElementById('app')
    );

    'Study > React' 카테고리의 다른 글

    state  (0) 2020.05.27
    defaultProps  (0) 2020.05.27
    handleEvent, onEvent, and this.props.onEvent  (0) 2020.05.27
    Receive an Event Handler as a prop  (0) 2020.05.27
    Pass an Event Handler as a prop  (0) 2020.05.27

    댓글

Designed by Tistory.