콘텐츠로 이동

리덕스 (Redux)

리덕스는 애플리케이션의 상태를 예측 가능하게 관리할 수 있도록 도와주는 상태 관리 라이브러리입니다.

핵심 개념

  1. 액션 (Action): 상태 변화를 설명하는 객체입니다. 반드시 type 필드를 가져야 합니다.
  2. 액션 생성 함수 (Action Creator): 액션 객체를 만들어 주는 함수입니다.
  3. 리듀서 (Reducer): 현재 상태와 액션을 파라미터로 받아 새로운 상태를 반환하는 함수입니다. 불변성을 반드시 지켜야 합니다.
  4. 스토어 (Store): 애플리케이션의 상태와 리듀서, 내장 함수들이 보관되는 곳입니다. 프로젝트당 하나의 스토어만 가집니다.
  5. 디스패치 (Dispatch): 스토어의 내장 함수로, 액션을 발생시켜 리듀서를 실행합니다.
  6. 구독 (Subscribe): 상태가 업데이트될 때마다 특정 리스너 함수를 호출합니다.

리덕스의 세 가지 규칙

  1. 단일 스토어: 하나의 애플리케이션에는 하나의 스토어만 존재해야 합니다.
  2. 읽기 전용 상태: 상태는 오직 액션을 통해서만 변경할 수 있으며, 기존 객체를 수정하지 않고 새로운 객체를 생성하는 불변성을 유지해야 합니다.
  3. 리듀서는 순수한 함수: 리듀서는 이전 상태와 액션만을 파라미터로 받아 결과값을 반환해야 하며, 외부 API 호출이나 랜덤 값 생성 등의 부작용(Side Effect)이 없어야 합니다.

바닐라 자바스크립트에서의 리덕스

리덕스는 리액트 전용이 아니며, parcel과 같은 번들러를 사용하여 바닐라 자바스크립트 프로젝트에서도 독립적으로 사용할 수 있습니다.