[React] Props와 State, Render함수

2022. 9. 1. 20:01·🍞 FrontEnd/React

Props와 State


Props는 컴포넌트 외부에서 컴포넌트에게 주는 데이터이다.

state는 컴포넌트 내부에서 변경할 수 있는 데이터이다.

둘 다 변경이 발생하면, 랜더가 다시 일어날 수 있다.

Render 함수


Props와 State를 바탕으로 컴포넌트를 그린다.

그리고 Props와 State가 변경되면, 컴포넌트를 다시 그린다.

컴포넌트를 그리는 방법을 기술하는 함수가 render 함수이다.

 

Function 컴포넌트(props) { return JSX; }


// props에는 {message: "안녕하세요"} 객체가 들어옴
function Component(props) {
  return (
    <div>
      <h1>{props.message} 이것은 함수로 만든 컴포넌트입니다.</h1>
    </div>
  );
}
ReactDOM.render(
  <Component message="안녕하세요" />,
  document.querySelector("#root")
);

 

기본값 설정하는 법

class Component extends React.Component {
  render() {
    return (
      <div>
        <h1>{this.props.message} 이것은 클래스로 만든 컴포넌트입니다.</h1>
      </div>
    );
  }
}

// 1번째 방법
Component.defaultProps = {
  message: "기본값",
};

ReactDOM.render(<Component />, document.querySelector("#root"));

 

class 컴포넌트 extends React.Component


class Component extends React.Component {
  // state는 항상 객체여야함
  // 1번째 방법
  state = {
    count: 0,
  };
  // 2번째 방법
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    return (
      <div>
        <h1>{this.props.message} 이것은 클래스로 만든 컴포넌트입니다.</h1>
        <p>{this.state.count}</p>
      </div>
    );
  }

  componentDidMount() {
    setTimeout(() => {
      // 1번째 방법 (객체를 통째로 새로 만들어서 넣는 방식)
      this.setState({
        count: this.state.count + 1,
      });
      // 2번째 방법 (이전 값을 이용할 수 있음)
      this.setState((previousState) => {
        const newState = { count: previousState.count + 1 };
        return newState;
      });
    }, 1000);
  }
}

ReactDOM.render(
  <Component message="안녕하세요" />,
  document.querySelector("#root")
);

 

기본값 설정하는 법

class Component extends React.Component {
  render() {
    return (
      <div>
        <h1>{this.props.message} 이것은 클래스로 만든 컴포넌트입니다.</h1>
      </div>
    );
  }
  // 1번째 방법(class 컴포넌트만 가능)
  static defaultProps = {
    message: "기본값",
  };
}
// 2번째 방법
Component.defaultProps = {
  message: "기본값",
};

ReactDOM.render(<Component />, document.querySelector("#root"));

'🍞 FrontEnd > React' 카테고리의 다른 글

[React] Component Lifecycle (v16.3 이전)  (0) 2022.09.01
[React] Event Handling  (0) 2022.09.01
[React] JSX에 대해서  (0) 2022.09.01
[React] React.createElement 컴포넌트  (0) 2022.09.01
[React] React 라이브러리  (2) 2022.09.01
'🍞 FrontEnd/React' 카테고리의 다른 글
  • [React] Component Lifecycle (v16.3 이전)
  • [React] Event Handling
  • [React] JSX에 대해서
  • [React] React.createElement 컴포넌트
박빵이
박빵이
2025년에도 갓생살기
  • 박빵이
    기억보다 기록
    박빵이
  • 전체
    오늘
    어제
    • 분류 전체보기 (337)
      • 🍞 FrontEnd (97)
        • HTML+CSS (4)
        • JavaScript (17)
        • TypeScript (4)
        • React (52)
        • Next.js (2)
        • Android (15)
      • 🍞 BackEnd (24)
        • Java (15)
        • Node.js (6)
        • Spring (1)
      • 🍞 Cloud & Infra (0)
        • AWS SAA (0)
        • Microsoft Azure (0)
      • 🍞 Algorithm (147)
        • C++ (4)
        • Baekjoon (41)
        • Programmers (97)
      • 🍞 Computer Science (18)
        • 운영체제 (1)
        • 데이터 통신 (6)
        • 네트워크 (6)
        • 데이터베이스 (1)
      • 🍞 대외활동 & 부트캠프 (42)
        • 삼성 청년 SW 아카데미 (1)
        • LG유플러스 유레카 (0)
        • 한국대학생IT경영학회 (1)
        • IT연합동아리 UMC (17)
        • 길벗 블로깅 멘토 (18)
        • IT연합동아리 피로그래밍 (3)
        • 개발 컨퍼런스 (2)
  • 블로그 메뉴

    • Admin
  • 링크

    • GitHub
  • 인기 글

  • 태그

    JavaScript
    백준
    level2
    코틀린
    알고리즘
    위상정렬
    umc
    유니온파인드
    map
    Java
    길벗 블로깅 멘토링
    프로그래머스
    Android
    Front
    길벗 블로깅 멘토
    안드로이드
    코딩자율학습
    react
    C++
    level1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박빵이
[React] Props와 State, Render함수
상단으로

티스토리툴바