프론트엔드/Redux

1. Redux

2023. 4. 24. 14:12

리덕스란?

 

리덕스 공홈에선 리덕스를 이렇게 설명하고 있다.

 

Redux는 자바스크립트 앱을 위한 예측 가능한 상태 컨테이너
Redux는 여러분이 일관적으로 동작하고, 서로 다른 환경에서
작동하고, 테스트하기 쉬운 앱을 작성하도록 도와준다.

 

이게 무슨소리...?? 그냥 쉽게

데이터를 중앙집권화를 시켜서 데이터 사용 및 관리를

편하게 만들어주는 라이브러리 라고 생각하면된다.

 


 

Redux에는 3가지의 원칙이 있다.

 

1. Single source of truth

  • 동일한 데이터는 항상 같은곳에서 가지고 온다.
  • 즉, 스토어라는 하나뿐인 데이터 공간이 있다는 의미

2. State is read-only

  • 리액트에서는 setState 메서드를 활용해야만 상태변경이 가능
  • 리덕스에서도 액션이라는 객체를 통해서만 상태변경이 가능

3. Changes are made with pure functions

  • 변경은 순수함수로만 가능
  • 리듀서와 연관되는 개념
  • Store - Action - Reducer

 

그럼 Store, Action, Reducer가 뭘까??

 

 

1. Store(스토어)

 

Store(스토어)는 상태가 관리되는 오직 하나의 공간

 

  • 컴포넌트와는 별개로 스토어라는 공간이 있고,
    그 스토어 안에서 앱에서 필요한 상태를 담는다.
  • 컴포넌트에서 상태 정보가 필요할 때 스토어에 접근

 

 

2. Action(액션)

 

Action(액션)은 앱에서 스토어에 운반할 데이터를 말한다.
Action(액션)은 자바스크립트 객체 형식
{
  type: "Action_CHANGE_USER",  // 필수
  payload: {  // 옵션
    name: "승현",
    age:25,
  }
}

 

 

3. Reducer(리듀서)

 

  • Action(액션)을 Store에 바로 전달하는 것이 아니다.
  • Action(액션)을 Reducer(리듀서)에 전달해야한다.
  • Reducer(리듀서)가 주문을 보고 Store의 상태를 업데이트 하는것
  • Action(액션)을 Reducer(리듀서)에 전달하기 위해서는
    dispatch() 메서드를 사용해야한다.

 


 

Flux 패턴

 

Flux 패턴은 큰 애플리케이션에서 데이터 흐름을

일관성 있게 관리함으로써 프로그램의 예측가능성을 높이기 위해 만들어졌다.

 

기존에 사용하던  MVC패턴은 데이터가 양방향으로 흐를 수 있는데,

아래와 같이 규모가 큰 애플리케이션에서는

서로가 서로를 업데이트 시켜주기때문에 매우 복잡한 데이터 흐름을 가지게된다.

 

 

이러한 문제를 해결하기 위해 Flux패턴을 생각해 낸것이다.

 

 

Flux패턴은 각 요소들을 하나씩 순서대로 살핀다.

 

 

각 요소들은 단방향 흐름에 순서대로 역할을 수행, View로부터

새로운 데이터 변경이 생기면 처음부터 다시 순서대로 진행하기 때문에

예외없이 데이터를 처리할 수 있다.

'프론트엔드/Redux' 카테고리의 다른 글
  • 2. 구독 페이지 (리액트 리덕스)
plla2
plla2
프론트엔드 개발자가 되고픈 개미의 일대기 🐜
plla2
코린이 "개미"의 개발블로그
plla2
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프론트엔드 (40)
      • CSS (1)
      • JS (16)
      • React (17)
      • Redux (2)
      • TS (4)
      • Pre-project (0)
    • 프로젝트 회고, 리팩토링 (14)
      • 포트폴리오 프로젝트 (2)
      • moviepop 팀 프로젝트 (1)
      • lofi 프로젝트 (2)
      • 스택오버플로우 팀 프로젝트 (5)
      • commerce 프로젝트 (1)
    • 코테 (26)
      • koans, 코플릿, sprint (9)
      • 데일리 코딩 (17)
    • 백엔드 (5)
      • Node (4)
    • CS (6)
      • 알고리즘 (2)
      • 자료구조 (1)
      • 네트워크 (1)
    • 회고, 면접준비 (16)
      • Next.js Doc 번역 (7)
      • 면접 답변용 정리 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 비동기
  • js
  • HTMLCollection
  • 렉시컬
  • 프론트엔드
  • 프로토타입 체인
  • 트리 자료구조
  • 리액트 라우터
  • 중첩구조분해
  • 배열렌더링
  • State
  • 태그래핑
  • NodeList
  • 상태
  • React
  • 객체분해
  • 정규식
  • 동기 비동기
  • 배열분해
  • camelCase
  • 단어의 시작
  • Twittler
  • 데일리코딩
  • 클래스형
  • 페이지네이션
  • 블로킹 논블로킹
  • 데일리 코딩
  • dom
  • 프로토타입
  • 구조 분해 할당

최근 댓글

최근 글

hELLO · Designed By 정상우.
plla2
1. Redux
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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