리액트로 개발을 하다보면 상태 관리를 할 줄 알아야 한다!라는 얘기를 들어본 적이 있을건데, 이때 드는 근본적인 질문이 “상태 관리가 뭔데?” 라는 거다.
이번 글에서는 상태 관리란 무엇이고, 왜 상태 관리라는 것을 하는지, 그리고 상태 관리를 도와주는 라이브러리들에 차이점에 관해서 후술하겠다.
상태란 쉽게 말해서 변수다. 일반 변수와는 차이가 있는데, 상태는 값이 변경되면 자동으로 화면이 업데이트(리 렌더링)되는 변수이다.
상태 관리란 위에서 언급한 상태(변수)를 한 곳에서 체계적으로 관리하는 방법이다. 애플리케이션이 커지고 여러 컴포넌트가 동일한 상태를 공유할 때, 상태들을 관리하고 업데이트하는 것, 이것이 상태 관리의 핵심이다.
React는 단방향 데이터 흐름이다. 데이터가 부모 컴포넌트에서 자식 컴포넌트로만 전달이 가능하다는 것인데, 이러한 특성때문에 몇가지 문제가 발생할 수 있다.
💡 단방향 흐름인 이유
1. 예측 가능성
2. 디버깅 용이성
3. 상태 관리의 단순화
4. 성능 최적화
리액트에서는 최상위 컴포넌트 (ex.1번 컴포넌트)에서 하위 컴포넌트(ex.5번 컴포넌트)로 직접 데이터를 전달할 수 없기 때문에 (1→ 2→ 3→ 4→ 5)로 순차적으로 전달해줘야 하는데, 이를 Props Drilling이라고 한다.
여러 컴포넌트에서 같은 데이터를 사용할 때, 데이터의 일관성을 유지하는것이 중요한데 상태 관리 도구는 데이터의 중앙 관리를 가능하게 한다.
애플리케이션이 커질수록 컴포넌트가 어떤 데이터를 변경했는지 추적하는것이 어려운데, 상태 관리 도구는 이러한 변화를 추적하는 기능을 제공한다.
상태를 관리해주는 도구들은 여러가지가 있는데 각각의 상태 관리 도구들이 언제 적합한지 알아보자.
가장 널리 사용되는 상태 관리 라이브러리
예측 가능한 단방향 데이터 흐름
강력한 개발자 도구 지원
단점: 보일러 플레이트 코드가 많음
💡 보일러 플레이트 코드란?
- 실제 기능 구현과는 별개로 해당 기능을 사용하기 위해 기본적으로 작성해야 하는 코드