본문 바로가기
IT/React

React - 상태(불변 상태 - props)

by 최고영회 2019. 3. 15.
728x90
반응형
SMALL

2019/03/13 - [전체] - React - 상태(가변 상태 - state)


리액트에서 불변 데이터를 전달하기 위한 가장 기본적인 방법은 속성(props)을 이용하는 것이다. 

리액트에서는 모든 컴포넌트가 속성을 수신할 수 있으며 constructor, render 메서드 및 생명주기 메서드들에서 활용할 수 있다. 


속성은 리액트 컴포넌트에 전달되는 데이터다. 

부모 컴포넌트가 전달할 수도 있고 컴포넌트 자체의 defaultProps 정적 메서드를 통해 전달할 수도 있다. 

속성은 보통 부모 컴포넌트가 전달한다. 

한 컴포넌트의 '상태'는 다른 컴포넌트의 '속성' 이 될 수 있다. 


일단 속성을 컴포넌트에 전달하면, 그 컴포넌트 내에서 속성값을 절대로 변경해서는 안 된다. 


PropTypes와 defaultProps 는 개발의 편의성을 위해 제공되는 도구이다. 

- PropTypes: 컴포넌트가 어떤 종류의 속성을 필요로 하는지를 명시하는 타입 확인 기능 제공

- defaultProps: 컴포넌트의 속성에 대한 기본값 정의 


속성을 이용하는 기본적인 소스코드를 살펴보자. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import React from "react";
import { render } from "react-dom";
import PropTypes from "prop-types";
 
class Counter extends React.Component {
  static propTypes = {
    //#A
    incrementBy: PropTypes.number
  };
  static defaultProps = {
    incrementBy: 1
  };
 
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
    this.onButtonClick = this.onButtonClick.bind(this);
  }
  onButtonClick() {
    this.setState(function(prevState, props) {
      return { count: prevState.count + props.incrementBy };
    });
  }
  render() {
    return (
      <div>
        <h1>{this.state.count}</h1>
        <button onClick={this.onButtonClick}>++</button>
      </div>
    );
  }
}
 
render(<Counter incrementBy={1/>, document.getElementById("root"));
 




728x90
반응형
LIST

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

React - 생명주기 메서드  (0) 2019.03.27
React - 컴포넌트 간의 통신  (0) 2019.03.15
React - JSX  (0) 2019.03.13
React - 상태 (기본)  (0) 2019.03.03
React - PropTypes (유효성 검사)  (0) 2019.03.03