Redux는 Flux개념을 바탕으로한 React에서 현재 가장 많이 사용되는 State관리 라이브러리
State : React Component에서 변경가능한 데이터
Flux : https://haruair.github.io/flux/docs/overview.html
React는 React컴포넌트에서 개별적으로 state
를 관리한다. 그러나 Redux를 사용하면 state
를 별도의 전용 장소인 store
에서 상태를 관리하고 React Component에서는 그걸 보여주기만 하는 용도로 사용한다.
장점 1. 상태의 중앙화
앞에서 말한것과 같이 Redux는 store
를 통해 상태를 한 곳에서 관리하는데 이것을 "상태의 중앙화"라고 한다. 상태의 중앙화로 다음과 같은 이점을 얻을 수 있다.
props
를 통해 관리하지 않고 store
에서 관리하면 된다.state
를 쉽게 저장하고 불러올 수 있다.store
에서만 관리하게 되면서 상태를 한 군데만 저장해서 관리하면 된다.Rudux는 상태를 읽기 전용으로 취급한다. 상태를 변경하기 위해서는 상태 일부를 변경하는 것이 아니라 상태 전체를 변경해야 한다. 이로 인해 다음과 같은 이점을 얻을 수 있다.
Rudex Undo
라이브러리를 통해 실행 취소 기능을 제공한다.Redux는 상태를 변경하는 도중 부수 효과(side effect)가 일어나지 않도록 코딩하기를 권장한다. 이와 함께 상태를 변경하려는 시도를 복제 저장, 전송할 수 있도록 자바스크립트 객체 형태로 구성하기를 강제한다. 이 때 부수 효과 없이 상태를 변경하는 함수를 Reducer
라고 하며, 상태 변경을 어떻게 할 것인지 정보를 담은 자바스크립트 객체를 Action
이라고 한다.
부수효과(side effect) : 함수가 실행될 때 매개변수가 아닌 다른 값에 따라 반환값이 바뀌는 것.
Reducer와 Action을 통해 다음과 같은 이점을 얻을 수 있다.
Action
만 가지고 상태가 어떻게 변화할지 완벽하게 예상할 수 있다.Action
의 일부를 제외하고 다시 실행하더라도 어떤 일이 벌어질지 예상하기 쉽다.단점 1. 러닝 커브
React를 배우고 Readux를 배우기 시작하면 러닝커브가 높아진다. 이에 재밌는 글이 있어 공유한다.
단점 2. Redux가 개발자를 제약할 수 있다.
Redux는 일반적인 라이브러리나 프레임워크가 아니다. 리덕스만의 설계 철학과 함께 철학을 쉽게 따를 수 있도록 여러 도구를 지원해주는 개발도구다. 설계 철학을 따른다는 것은 그냥 라이브러리를 사용하는 것과는 완전히 다른 문제다. Redux를 사용함으로 인해 여러가지 강력한 장점을 얻을 수 있다. 하지만 Redux의 철학이 강제하는 방식으로 인해 오히려 코드가 복잡해지거나 코드를 작성하기 어려워질 수도 있다. Redux 탄생 배경을 이해하고 Redux가 제공하는 여러 장점이 필요한 상황이 아니라면 다른 라이브러리나 프레임워크를 사용하는 것이 더 나을수도 있다.