컴포넌트 간 상태 공유 용이
여러 컴포넌트에서 공통적으로 사용되는 상태를 중앙화하여 관리, 여러 곳에서 쉽게 접근 가능
부모 컴포넌트에서 자식 컴포넌트에게 상태를 전달하기 위해 여러 컴포넌트 거치는 props drilling 현상을 겪지 않고 상태 공유가 가능
관심사 분리 용이함
별도 상태 관리를 하면 컴포넌트는 UI로직에만 집중 가능
ex - redux엔 상태 변경 로직을 reducer에 정의, 컴포넌트 단에선 dispatch를 통해 reducer 호출하는 방식으로 동작
이러한 분리는 관심사의 분리 원칙을 따르며 코드 재사용성과 테스트 용이성 높여줌
성능 최적화 도움
불필요한 리렌더링 방지하는 메커니즘이 있음,
ex - zustand는 구독 메커니즘을 통해 실제 상태가 변경된 컴포넌트만 리렌더링 되도록 보장
작은 규모 프로젝트에선 전역 상태 관리 라이브러리가 오버엔지니어링이 될 수도 있음
오히려 불필요한 복잡성이 추가되어 개발 생산성 저하될 수 있음
react 내장 기능인 useState, useContext만으로 충분할 수 있음
프로젝트 규모가 크고 복잡한 상태 관리가 필요하거나, 여러 컴포넌트에서 공유해야 하는 상태가 많은 등 실제로 필요성이 느껴질 때 도입해야 오버엔지니어링 막을 수 있음