리덕스란?
리덕스는 자바스크립트 어플리케이션 상태관리 라이브러리 이다. 특히 React와 함께 사용될때 유용하지만 다른 라이브러리와 프레임워크와도 사용이 가능하다.
리덕스는 하나의 상태를 하나의 저장소로 관리하며 이 저장소에 저장된 상태는 직접 수정이 불가능하고 오직 액션을 통해서만 변경될 수 있다. 액션은 상태 변경을 위한 명령어이며 어플리케이션에서 발생하는 모든 상태 변경은 이러한 액션을 통해 이루어진다. 액션을 처리하기 위해서는 리듀서를 이용해 이전 상태와 액션을 받아 새로운 상태를 반환하는 순수함수이다.
리덕스는 단방향 데이터 흐름을 따르기 때문에 상태 변화를 예측하기 쉽고, 디버깅도 용이하다. 또한 여러 컴포넌트 간의 상태를 공유하거나 상태 변경 로직을 중앙 집중화하여 관리하기 때문에 코드 유지보수성을 높여준다.
https://summerr.tistory.com/56
MVC pattern
프로그래밍 개발에는 여가지 디자인 패턴이 존재한다 .
그 중에서 리덕스와 관련있는 Flux패턴과 그와 반대되는 MVC 패턴에 대해서 알아보자
MVC Pattern (Model View Controller Pattern )

MVC는 양방향으로 데이터가 흐르고, 규모가 커질수록 Controller의 규모가 커지면서 View 와 Model사이의 복잡도와 Model들간의 종속 업데이트로 개발이 어려워 질수 있다.
이 패턴을 사용해 왔지만 규모가 커지면 수많은 view와 model들이 생기고 이것들을 파악하기 어렵게되어, 페이스북에서 Flux라는 패턴에 대해서 발표했다.
Flux Pattern

Flux 패턴은 단방향 데이터 흐름으로, 어떤 액션이 발생 하면 dispatcher에 의해 스토어에 변경된 사항이 저장 된다. 이 액션에 의해서 변경된 데이터들은 view에 반영되는 패턴이다. Redux 라이브러리는 Flux 패턴을 채택하고 있다.
Redux
리덕스는 상태관리를 공유하는것에 대해서 도움을 주는 라이브러리다. 리액트의 공식 문서를 보면 리덕스는 리덕스를 사용해야하는 때을 잘 판단하라고 설명 되어있다 .
Pete Hunt - "You'll know when you need Flux, if you aren't sure if you need it, you don't need it."
Dan Abramov - "I would like to amend this: don't use Redux until you have problems with vanilla React."
https://redux.js.org/faq/general#when-should-i-use-redux
Redux를 사용해야하는 경우
- 규모가 큰 어플리케이션의 상태가 다른 컴포넌트들에게 필요한 경우
- 앱의 상태가 자주 업데이트 되는 경우
- 상태를 업데이트하는 로직이 복잡할 경우
- 앱에 중간 또는 큰규모의 코드베이스가 있으며, 많은 사람들이 작업하는 경우
- 시간이 지남에 따라 해당 상태가 어떻게 업데이트 되는지 확인이 필요한 경우
**리덕스를 꼭 필요할때 사용해야한다.**
리덕스는 꼭 리액트에서만 사용할수 있는가?
아닙니다. 리액트 공신 문서에 따르면, "가장 일반적인 용도는 React 및 React Native와 함께 사용되지만 Angular, Angular 2, Vue, Mithril 등에 사용할 수 있는 바인딩이 있습니다."
'React' 카테고리의 다른 글
| [React 오류] Redux연결 중 Cannot read properties of undefined (reading 'getState') 오류 해결 (0) | 2023.06.20 |
|---|---|
| React - Rest API, Open API, API Key (1) | 2023.05.19 |