state는 컴포넌트의 내부에서 선언되기 때문에 이러한 state 는 외부에 공개하지 않고 컴포넌트가 스스로 관리한다.
state는 컴포넌트 변수의 값을 저장할 수 있고, 변수의 값이 바뀔 때 컴포넌트는 렌더링을 다시 한다.
예를 들어 api를 통해서 데이터를 불러올때 state를 이용해 값을 저장해주면 유용하게 쓰일 수 있다. 데이터가 바뀔때마다 렌더링을 해주는 점을 잘 이용할 수 있는 장점이 있다.
다만 데이터가 바뀔때마다 렌더링을 원치 않으면 state를 직접적으로 사용하는 것이 좋은 생각이 아닐수도 있다. 브라우저에 바로 보여지는 차이기 때문에 어떻게 해야하는지 선택의 어려움은 없는 편이다.
먼저 props("properties"의 줄임말)로 state 와의 간단한 차이는 변할수 없다는 것. 컴포넌트는 상속하는 부모 컴포넌트로 부터 props 를 받고 이 props 는 상속받는 컴포넌트 내에서 수정이 불가능하다. 리액트에서 부모 > 자식 일방향성 상속이라는 특징때문이다 .
State는 내부 (컴포넌트)에서 생성하고 활동하고, 데이터를 변경할 수 있음.
Props는 외부(부모 컴포넌트)에서 상속 받는 데이터이며, 데이터를 변경할 수 없음.