이전에도 한번 얘기했듯이 전역상태를 관리하는 여러방법들중 하나입니다.
리덕스 공식 문서에서는 다음과 같이 리덕스를 정의하고 있습니다.
리덕스에 들어가기 앞서 Flux패턴이라는것을 먼저 짚고 넘어가겠습니다.
우선 Flux패턴에 들어가기 전 MVC패턴에 대해서 알아보겠습니다.
관심사의 분리(separation of concern, SoC)에서부터 나온 패턴입니다.
관심사 분리로 코드의 단순화 및 유지보수의 더 높은 수준의 자유가 생긴다.
관심사가 잘 분리될 때 독립적인 개발과 업그레이드 외에도 모듈 재사용을 위한 더 높은 정도의 자유가 있다.
모듈이 인터페이스 뒤에서 이러한 관심사의 세세한 부분을 숨기기 때문에 자유도가 높아짐으로써 다른 부분의 세세한 사항을 모르더라도, 또 해당 부분들에 상응하는 변경을 취하지 않더라도 하나의 관심사의 코드 부분을 개선하거나 수정할 수 있게 된다.
Flux 패턴의 경우 기존 MVC패턴의 문제점에서 나온 패턴이라고 합니다.
이 프로젝트는 파생되는 데이터를 올바르게 다루기 위해 시작되었다. 예를 들면 현재 뷰에서 읽지 않은 메시지가 강조되어 있으면서도 읽지 않은 메시지 수를 상단 바에 표시하고 싶었다. 이런 부분은 MVC에서 다루기 어려운데 메시지를 읽기 위한 단일 스레드에서 메시지 스레드 모델을 갱신해야하고 동시에 읽지 않은 메시지 수 모델을 갱신 해야하기 때문이다.
그렇다면 왜 리덕스를 사용하기 전에 Flux 패턴에 대해 알아봤을까요?
Redux는 Flux 패턴을 근본으로한 라이브러리이다.
React 뿐 아니라 다른 UI 라이브러리에서도 사용할 수 있다.
Store
: Application의 전체 state는 store라고 불리는 곳에서 관리된다.
Action
: action은 state 변화를 일으킬 수 있는 행동정보, 현상등이라고 생각하면 된다.
Dispatcher
: action이 일어나면 Dispatcher를 통해서 store의 state가 업뎃된다.
View
: state가 변경되면 view에서 감지하고, 화면에 반영(render) 된다.
위의 그림과 같이 view단에서 action이 일어날 수도 있다(당연). view에서 action이 일어나면 -> 다시 dispatcher에 의해 store에 저장되고 -> state가 변경되면 -> 필요한 view에서 감지를 알아차린다.
순수함수(Pure function)란?
항상 같은 input은 항상 같은 output을 반환하는 함수.
다음시간에는 본격적인 리덕스 사용법에 대해 알아보도록 하겠습니다.