애플리케이션의 상태(state)를 관리하기 위한 자바스크립트 라이브러리
MVC 패턴의 양방향 데이터 흐름은 설계하기 간단하고 코드 작성하기 쉬웠다.
하지만, UI/UX의 중요성과 함께 프로덕트 규모가 많이 커지고 프론트에드에서 관리해야할 상태가 많아진다. 그러면서 상태 관리가 더욱 중요해졌다.
하나의 객체를 직렬화해서 서버와 클라이언트가 프로그램의 전체 상태값을 주고 받을 수 있다.
상태값을 버리지 않고 저장해 놓으면 실행 취소와 다시 실행 기능을 쉽게 구현할 수 있다.
(state, action) => nextState
리듀서 함수는 이전 상태와 액션 객체를 파라미터로 받고, 파라미터 외의 값에는 의존하면 안 된다.
똑같은 파라미터로 호출된 리듀서 함수는 언제나 똑같은 결과 값을 반환해야 한다.