State
1. state는 리액트의 Component의 변경 가능한 데이터를 의미한다.
2. state는 개발자가 직접 정의한다.
3. 렌더링이나 데이터 흐름에 사용되는 값만 state에 포함시켜야 한다.
state가 변경될 경우 컴포넌트가 재렌더링 되기 때문이다. 불필요한 경우에 컴포넌트가 재렌더링 될 경우 성능에 치명적이다.
4. state는 js의 객체이다.
5. 모든 js 클래스는 생성자가 존재한다. 해당 생성자는 여느 프로그래밍 언어와 마찬가지로 클래스가 생성될 때 실행된다. 리액트에서 클래스의 생성자에는 state가 존재한다. 따라서 클래스로 된 Component의 경우 클래스에서 정의한다.
6. 함수형으로 된 Component는 useState를 사용하여 정의한다.
7. state는 변경해서는 안된다. ==> 안되진 않지만 직접 변경해서는 절대 안된다. 이슈는 위에 설명해두었다.
LifeCycle
Component가 계속 존재하는 것이 아닌, 시간의 흐름에 따라 생성되고 업데이터 되다가 사라진다.