형제 컴포넌트 간의 데이터 공유 시에는 부모 컴포넌트를 경유해야만 한다.
만약, 자식 컴포넌트의 수가 너무 많아진다면 상태관리가 비효율적이고 복잡해질 것이다.
리덕스는 이러한 복잡성을 줄여주기 위해 상태를 관리해주는 라이브러리다.
Redux의 기본 개념:
세 가지 원칙
1. Single source of truth
- 동일한 데이터는 항상 같은 곳(store)에서 데이터를 가져온다
- State is read-only
- action 이라는 객체를 통해서 state를 변경할 수 있다.
- Changes are made with pure functions
- 변경은 순수 함수만을 통해서 가능하다.
Reducer
현재 상태와 Action 객체를 이용해서 다음 State를 만든다.
리덕스의 장점:
1. 상태를 예측 가능하게 만들어 준다.
2. 유지보수
3. 디버깅에 유리하다
(action과 state log 기록을 하기 때문에 추적이 가능해짐)
4. 테스트를 붙이기 쉽다.