4.3 상태 객체와 속성
상태 객체와 속성은 모두 클래스의 멤버이며, 각각 this.state와 this.props를 말한다. 이것이 유일한 공통점이다! 상태 객체와 속성의 주요한 차이점 중 하나는 상태 객체는 변경 가능한 반면, 속성은 변경이 불가능하다는 점이다.
또 다른 차이점은 속성은 부모 컴포넌트에서 전달하지만, 상태는 부모 컴포넌트가 아닌 해당 컴포넌트 자체에서 정의한다는 점이다. 이는 속성 값을 변경하는 것은 오직 부모 컴포넌트에서만 가능하고, 자체적으로는 변경할 수 없다는 원리다. 그러므로 속성은 뷰 생성 시에 정해지고, 정적인 상태로 유지된다(변경되지 않는다). 반면에 상태는 해당 컴포넌트에서 설정되고 갱신된다.
속성과 상태는 각자 다른 목적으로 사용되지만 둘 다 컴포넌트 클래스에서 접근이 가능하고, 다른 표현(뷰)으로 여러 컴포넌트를 구성할 수 있도록 도와준다. 5장에서 살펴볼 컴포넌트 라이프사이클과 관련해서는 차이점이 있다. 함수가 다른 출력을 생성하도록 하기 위해 속성과 상태를 입력한다고 생각하자. 여기서 출력은 뷰다. 따라서 그림 4-6처럼 서로 다른 속성과 상태 집합에 따라 서로 다른 UI(뷰)를 가질 수 있다.