- Javascript app을 위한 예측가능한 state container 라이브러리
- 어플리케이션의 state를 관리하기 위한 오픈소스 자바스크립트 라이브러리이다.
리덕스가 등장하기 전 데이터흐름의 방향은 MVC구조였다.
이런 데이터 흐름은 양방향 데이터 구조 이다. State가 발생할 경우 Model, view, Controller 부분이 다 변하는 복잡한 흐름방향을 갖고 있다. 그래서 복잡한 프로젝트나 웹사이트들은 state 들의 변화가 많기 때문에 양방향 데이터흐름은 개발자들에게 큰 불편함을 느끼게 했다.
그래서 이런 문제점을 해결하기 위해 페이스북이 단방향 데이터 구조인 FLux를 개발하게 되었다.
- Dispatcher의 개념이 없다. 리듀서가 dispatcher와 store 의기능을 담당한다. 각 리듀서는 서로 의존할 수 없고, 고립되어 있다.
- Root의 하나의 store만 존재한다.
Reducer의 기본개념 : 3가지 원칙
1. Single source of truth
- 동일한 데이터는 항상 같은 곳에서 가져옴. 하나뿐인 store 데이터 공간
2. State is Read-only
- action이라는 객체를 통해서만 상태를 변경할 수 있음
3. Change are made with pure functions
- 변경은 순수함수로만 가능함.
- Store - Action - Reducer