개인 공부를 위해 작성했습니다
가장 많이 사용하는 형상 관리 기술, 리덕스👍에 대해 공부한 내용 정리해본다.
리덕스가 등장하기 이전 프론트엔드에서 데이터 흐름(형상)을 관리하는 방식은 MVC 패턴 이었다.
MVC 패턴의 큰 특징 중 하나가 양방향 데이터 흐름이다. 모델이 변경된다면 뷰 또한 변경되고, 사용자에 의해 뷰에서 변경이 일어난다면 모델 또한 변경된다. 이러한 양방향 데이터 흐름은 설계하기 간단하고 코드 작성하기 쉬운 장점이 있다.
하지만 애플케이션 규모가 커진다면 문제가 생긴다. 한 개의 모델이 여러 개의 뷰를 조작하고 한 개의 뷰가 여러 개의 모델을 조작한다면
2014년에 등장한 Flux는 MVC 패턴에서 겪은 복잡한 상황을 개선하는 것이 목적이었고 그 방법으로 단방향 데이터 흐름을 적용한 것이다.
View
는 MVC 패턴과 달리 데이터를 변경시키지 않고 Action을 넘겨준다. Action
은 반드시 Dispatcher를 지나게 되고 Dispatcher
를 통해서 데이터 변경이 일어나고 Store
를 통해서 전달 받는다. 이러한 단방향 데이터 흐름은 기존의 MVC 패턴에 있던 상태의 전이(뷰와 모델 사이의 데이터 변경이 연결된 수많은 곳으로 따라 변경되는 현상) 현상을 없애주고 예측 가능하다는 특징을 갖는다.
그리고 2015년, React + Flux의 구조에 Reducer를 결합한 Redux가 등장하게 된다.
의 사유로 Flux에서 진화한 Redux가 등장했다.
이미지: Redux가 필요하다는 것을 언제 알 수 있나요?
Reducer
를 통해서 일어나며 그 데이터는 스토어에 저장된다. Store
가 된다. 순수함수란?
함수가 실행되는 곳이 어디서든, 언제든 외부의 상태를 변경하지 않으면서 동일한 입력값에는 동일한 결과값을 반환해야 한다.
이러한 순수 함수의 특징에 순수 Reducer는 2가지 특징을 더 갖는다.
React로 단방향 데이터 흐름을 구현할 경우 ‘과도한 prop drilling(prop 전달이 매우 많은 경우)’가 생기거나 디버깅이 어려움이 생긴다면 그때 Redux를 사용하자.