리덕스(Redux)는 자바스크립트 앱을 위한 상태관리 라이브러리입니다. 모든 상태를 하나의 저장소(store)에서 관리하는 것이 특징입니다.
리덕스를 사용하면:
컴포넌트의 상태 관련 로직을 다른 파일로 분리해 효율적으로 관리할 수 있습니다.
글로벌 상태를 손쉽게 관리할 수 있습니다.
상하위 컴포넌트를 거치지 않아도 값을 전달할 수 있습니다.
미들웨어를 통해 다양한 작업(비동기, 로깅)을 할 수 있습니다.
리덕스는 자바스크립트 기반의 프레임 워크에서 모두 사용할 수 있습니다.
리액트에서는 React-Redux 라이브러리를 사용해야 state와 props가 연동됩니다.
Redux에서는 Action → Dispatch → Reducer → Store 순서로 데이터가 단방향으로 흐르게 됩니다.
각각의 원칙이 Redux의 어떤 구성 요소와 연결이 되는지 확인해보기
Single source of truth
동일한 데이터는 항상 같은 곳에서 가지고 와야 한다는 의미입니다. 즉, Redux에는 데이터를 저장하는 Store라는 단 하나뿐인 공간이 있음과 연결이 되는 원칙입니다.
State is read-only
상태는 읽기 전용이라는 뜻으로, React에서 상태갱신함수로만 상태를 변경할 수 있었던 것처럼, Redux의 상태도 직접 변경할 수 없음을 의미합니다. 즉, Action 객체가 있어야만 상태를 변경할 수 있음과 연결되는 원칙입니다.
Changes are made with pure functions
변경은 순수함수로만 가능하다는 뜻으로, 상태가 엉뚱한 값으로 변경되는 일이 없도록 순수함수로 작성되어야하는 Reducer와 연결되는 원칙입니다.