React

[React] props? state?

kangju2000 2022. 9. 1. 15:12

리액트를 하다보면 'props', 'state'라는 말을 많이 들어봤을 것이다.

언뜻 보기엔 비슷해보이지만 엄연히 다르다.

 

React 공식 문서에서는 이렇게 정의한다.

props (“properties”의 줄임말) 와 state는 일반 JavaScript 객체입니다. 두 객체 모두 렌더링 결과물에 영향을 주는 정보를 갖고 있는데, 한 가지 중요한 방식에서 차이가 있습니다. 
props는 (함수 매개변수처럼) 컴포넌트에 전달되는 반면 
state는 (함수 내에 선언된 변수처럼) 컴포넌트 안에서 관리됩니다.

출처: https://ko.reactjs.org/docs/faq-state.html#gatsby-focus-wrapper

props

부모 컴포넌트에서 자식 컴포넌트로 전달하는 데이터(단방향 데이터 흐름을 가짐)

- props는 수정할 수 없음.(Read-only)

- prop-types를 이용하여 props의 자료형을 미리 선언 가능

- defaultProps를 설정하여 props의 기본값 및 필수값을 설정

 

state

컴포넌트의 내부에서 변경 가능한 데이터를 관리

- state는 변경 가능(changeable)

- 변경 시 리렌더링이 일어남

- state는 setState를 통해서만 변경되어여 함(직접 조작 불가능)

- 너무 많은 state를 사용하는 것은 피해야 함

 

  props state
부모 컴포넌트로부터 초기값을 가져올 수 있는가? YES YES
부모 컴포넌트에 의해 변경될 수 있는가? YES NO
컴포넌트안에서 기본값을 설정할 수 있는가?
(부모로부터 받은 props와 state 초기값은 모두 컴포넌트 내부에 정의된 기본값보다 우선시 된다.)
YES YES
컴포넌트안에서 변경할 수 있는가? NO YES
자식 컴포넌트의 초기값을 설정할 수 있는가? YES YES
자식 컴포넌트에서 변경할 수 있는가? YES NO

 

 

https://github.com/uberVU/react-guide/blob/master/props-vs-state.md

https://velog.io/@sun1301/React-Props-VS-State