[React] Redux - 기본편

2022. 7. 21. 15:00·React/이론
목차
  1. Redux의 주요 개념들
  2. 1. Action ( 액션 )
  3. 2. Action Creator ( 액션 생성 함수 )
  4. 3. Reducer ( 리듀서 )
  5. 4. Store ( 스토어 )
  6. 5. Dispatch ( 디스패치 )
  7. 6. Subscribe ( 구독 )
  8. Redux의 세 가지 원칙
반응형

Redux는 React에서 가장 많이 사용되고 있는 상태 관리 라이브러리 중 하나이다. 

최근에는 Redux Toolkit이 새롭게 생긴 김에 다시 정리해본다. 

 

Redux의 주요 개념들

1. Action ( 액션 )

상태가 변화가 필요할 때, 액션이 발생된다. 

{
    type: 'TOGGLE_MODAL',
    data: {
        // ...
    }
}

객체로 되어 있으며, type 속성은 반드시 필요하며, 액션을 구분하는 용도로 사용한다. 

 

2. Action Creator ( 액션 생성 함수 )

액션 객체를 만들어주는 함수이다. 

export const toggleModal = (data) => {
    return {
        type: "TOGGLE_MODAL",
        data,
    }
}

액션 생성 함수를 만들어서 사용하는 이유는 쉽게 컴포넌트에서 액션을 발생시키기 위해서이다. 

 

Redux에서 액션 생성 함수는 필수가 아니며, 직접 액션 객체를 작성할 수 있다. 

 

3. Reducer ( 리듀서 )

변화를 일으키는 함수이다. 

function reducer(state = initialState, action) {
    switch (action.type) {
        case "TOGGLE_MODAL":
            return !modal;
        case "OPEN_MODAL":
            return modal = true;
        case "CLOSE_MODAL":
            return modal = false;
        default: 
            return state
}

현재 상태 ( state )와 전달받은 액션을 참고해서 새로운 상태를 만들어서 반환한다. 

 

4. Store ( 스토어 )

상태가 들어있다. 하나의 프로젝트는 하나의 Store만 가질 수 있다. 

 

5. Dispatch ( 디스패치 )

Store의 내장 함수 중 하나로 액션 객체를 넘겨줘서 상태를 업데이트하는 이벤트 트리거이다. 

 

호출되면, Store는 Reducer 함수를 실행시켜 Action 처리 로직이 있다면 참고해 새로운 상태를 만든다.

 

6. Subscribe ( 구독 )

Store의 내장 함수 중 하나로 리스너 함수를 파라미터로 넣어 호출하면 상태가 업데이트될 때마다 

호출된다. 

const listener = () => {
    console.log("상태 업데이트");
}
const unsubscribe = store.subscribe(listener);

 

Redux의 세 가지 원칙

  1. Single Source of truth
    하나의 애플리케이션에 하나의 스토어만 존재한다는 원칙이다. 
    여러 개의 스토어를 사용할 수는 있으나, 권장하지는 않는다. 
  2. State is read-only
    상태 변화를 일으키는 방법은 액션을 발생하는 것뿐이다. 
  3. Changes are made with pure functions
    변화를 일으키는 리듀서 함수는 순수 함수여야 한다. 순수 함수란
    ① 리듀서 함수는 이전 상태 ( State )와 액션 객체를 파라미터로 받는다. 
    ② 파라미터 외의 값에는 의존하면 안 된다. 
    ③ 이전 상태는 건드리지 않고, 변화를 준 새로운 상태 객체를 만들어서 반환한다. 
    ④ 똑같은 파라미터로 호출된 리듀서 함수는 언제나 똑같은 결과 값을 반환해야 한다. 

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'React > 이론' 카테고리의 다른 글

[React] Flux  (1) 2022.10.13
[React] Redux - toolkit편  (1) 2022.07.22
[React] MobX - 심화  (2) 2022.05.05
[React] MobX - React에서 사용하기  (3) 2022.05.03
[React] MobX - 시작하기  (1) 2022.04.29
  1. Redux의 주요 개념들
  2. 1. Action ( 액션 )
  3. 2. Action Creator ( 액션 생성 함수 )
  4. 3. Reducer ( 리듀서 )
  5. 4. Store ( 스토어 )
  6. 5. Dispatch ( 디스패치 )
  7. 6. Subscribe ( 구독 )
  8. Redux의 세 가지 원칙
'React/이론' 카테고리의 다른 글
  • [React] Flux
  • [React] Redux - toolkit편
  • [React] MobX - 심화
  • [React] MobX - React에서 사용하기
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    프로그래머스
    리액트
    타일러영어
    Babel
    타입스크립트
    CSS
    CCNA
    네이버 부스트캠프
    영어독학
    네트워크
    알고리즘
    Docker
    next.js
    react
    ChatGPT
    typescript
    다이소
    ReactNative
    리얼학습일기
    바질 키우기
    Node.js
    자바스크립트
    리얼클래스
    식물
    redux
    영어회화
    덤프
    javascript
    바질
    webpack
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[React] Redux - 기본편

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.