[10장] 상태 관리
10.1 상태 관리
상태
- 상태란 리액트 애플리케이션에서의 상태는 렌더링에 영향을 줄 수 있는 동적인 데이터 값을 말한다.
- 리액트 공식 문서에서는 상태를 아래와 같이 정의하고 있다.
렌더링 결과에 영향을 주는 정보를 담은 순수 자바스크립트 객체
- 리액트에서의 상태는 시간이 지나면서 변할 수 있는 동적인 데이터이며, 값이 변경될 때마다 컴포넌트의 렌더링 결과물에 영향을 준다.
- 리액트 앱 내의 상태는 지역 상태, 전역 상태, 서버 상태로 분류할 수 있다.
- 리액트 공식 문서에서는 상태를 아래와 같이 정의하고 있다.
상태를 잘 관리하기 위한 가이드
-
시간이 지나도 변하지 않는다면 상태가 아니다.
-
파생된 값은 상태가 아니다.
- 부모에게서 전달받을 수 있는 props이거나 기존 상태에서 계산될 수 있는 값은 상태가 아니다.
- SSOT(Single Sourse Of Truth): 어떠한 데이터도 단 하나의 출처에서 생성하고 수정해야 한다는 원칙.
-
useState vs useReducer
- useState 대신 useReducer 사용을 권장하는 경우
- 다수의 하위 필드를 포함하고 있는 복잡한 상태 로직을 다룰 때
- 다음 상태가 이전 상태에 의존적일 때
- useState 대신 useReducer 사용을 권장하는 경우