ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • defaultProps
    Study/React 2020. 5. 27. 13:36

     

     

    defaultProps

     

    컴포넌트 클래스 Button을 살펴보아라. 

    import React from 'react';
    import ReactDOM from 'react-dom';
    
    class Button extends React.Component {
      render() {
        return (
          <button>
            {this.props.text}
          </button>
        );
      }
    }
    
    // defaultProps goes here:
    
    
    ReactDOM.render(
      <Button />, 
      document.getElementById('app')
    );

    8번째 줄에서, Button은 text로 이름된 prop을 받을 것이라 예상한다. 

    받은 text는 <button></button> 엘레먼트의 내부에 보여질 것이다. 

     

    만약 아무도 Button에 text를 전달하지 않는다면?

     

    만약 아무도 Button에 text를 전달하지 않는다면, 

    그렇다면 Button의 display는 빈칸이 될 것이다. 

    그러나 만약 Button이 대신에 디폴트 메세지를 보여줄 수 있다면 더 나을것이다. 

     

    당신은 당신의 컴포넌트 클래스에 defaultProps라 이름된 property를 줌으로써 이것이 일어나도록 만들 수 있다.

     

    class Example extends React.Component {
      render() {
        return <h1>{this.props.text}</h1>;
      }
    }
    
    Example.defaultProps;

     

    defaultProps property는 객체에 똑같이 전달되어야 한다. 

    class Example extends React.Component {
      render() {
        return <h1>{this.props.text}</h1>;
      }
    }
    
    // Set defaultProps equal to an object:
    Example.defaultProps = {};

    Inside of this object, write properties for any default props that you’d like to set:

     

    class Example extends React.Component {
      render() {
        return <h1>{this.props.text}</h1>;
      }
    }
    
    Example.defaultProps = { text: 'yo' }; 

    만약 <Example /> 에 아무런 텍스트를 전달하지않는다면 "yo"를 보여줄것이다. 

    만약 <Example />에 몇 택스트가 전달된다면, 전달된 텍스트가 보여질 것이다. 

     

    import React from 'react';
    import ReactDOM from 'react-dom';
    
    class Button extends React.Component {
      render() {
        return (
          <button>
            {this.props.text}
          </button>
        );
      }
    }
    
    // defaultProps goes here:
    Button.defaultProps = {text: 'I am a button'};
    
    ReactDOM.render(
      <Button text="" />,  // 디폴트값이 위에 만들어졌지만, 그 위에 ""를 덮어써서 결국 버튼엔 아무 텍스트가 없음.
      document.getElementById('app')
    );

     

     

    https://www.codecademy.com/courses/react-101/lessons/this-props/exercises/defaultprops

     

     

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

    Access a Component's state  (0) 2020.05.27
    state  (0) 2020.05.27
    this.props.children  (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

    댓글

Designed by Tistory.