코드스테이츠 프론트

리액트 리덕스를 간단하게 정리해보자

2023. 4. 24. 13:47
목차
  1. 🐕 Redux
  2. 👻FLUX의 기본적인 구조

🐕 Redux

Redux는 상태관리 라이브러리이며 리액트에 종속되는 라이브러리가 아닙니다.

따라서 리액트 환경 뿐만 아니라 다양한 환경 심지어는 바닐라 자바스크립트에서도

리덕스를 사용할 수 있습니다.

 

리덕스는 하위 컴포넌트의 상태 공유를 위해서 상태 끌어올리기와 props drilling을 반복해야한다는

리액트의 구조에서 기인한 문제점을 해결해줍니다.

 

컴포넌트의 깊이가 깊지 않은 경우에는 props를 사용해서 상태를 내려주는 것도

상태 끌어올리기를 통해 서로 다른 하위 컴포넌트에서

사용해야 할 상태를 상위 컴포넌트에서 관리하는 것 또한 그리 귀찮지 않은 범위에서 가능하지만

 

구조의 복잡도가 심해지고 깊이가 깊어질수록 이런식의 데이터흐름은 복잡도가 올라갑니다.

어느정도의 시점까지는 필요한 상태를 최대한 가까운 상위 컴포넌트에 배치하는것으로 해결할 수 있지만

 

만약 애플리케이션의 복잡도가 심할 경우 구조때문에 코드가 복잡해지게됩니다.

따라서 이를 해결하기 위해 FLUX 디자인 패턴의 도입을 고려해볼 수 있고

 

이것을 리액트는 리덕스를 통해 해결합니다.

https://www.youtube.com/watch?v=9wrHxqI6zuM

정말 눈물나는 역사가 아닐 수 없는.. 이런 역사가 생기게 된 계기는

리덕스가 가진 장황한 문법에 기인합니다.

리덕스 코어는 가벼운 대신 많은 부분을 개발자가 직접 작성해야했고

이는 리덕스의 악명높은 보일러플레이트 문제를 불러왔습니다.

 

리덕스의 장황한 문법에 저도 여러번 고생을 겪었는데..

그걸 또 쉽게 만들어주는 redux-action이나 react-redux같은 대안들도 그다지...

편해진다는 느낌은 없었습니다.

 

오히려 react-redux가 제공하는 connect 함수는 라이브러리의 단일 함수 중

가장 러닝커브가 높다라고 느껴진 함수였습니다.

알고 난 다음엔 별 거 없어보이지만 처음엔 그 생소한 구조가 주는 파괴력이 있다고해야할까요

만약 자바스크립트를 잘 모르고있는 상태였다면 그냥 사용을 포기했을 것 같아요

 

오히려 제공되는 라이브러리들의 함수가 어떤 일을 하는 애들인지

파악하는 데에 시간이 들어서 이시간에 그냥 쌩으로 작성하는게 나을지도..? 란 생각이 들었답니다.

 

하지만 리덕스툴킷은 이런 보일러플레이트를 획기적으로 줄여주고

리덕스 자체를 쉽게 만들어준다고 합니다!


👻FLUX의 기본적인 구조

https://bestalign.github.io/translation/cartoon-guide-to-flux/

 

Flux로의 카툰 안내서

원문: https://medium.com/code-cartoons/a-cartoon-guide-to-flux-6157355ab207 Flux…

bestalign.github.io

는 아주 좋은 레퍼런스가 있으니 이걸 참고합시다.

중요한 포인트는 단방향 데이터 흐름이며

Action -> Dispatcher -> reducer -> store의 흐름으로 갑니다.

 

각 요소의 역할은 다음과 같습니다.

Action 변경될 상태에 대한 정보를 담고 있어야합니다.
Dispatcher Action객체를 Reducer함수에 전달하는 역할을 합니다.
reducer Reducer 함수는 전달받은 Action객체의 정보를 기반으로
전역 상태 저장소 Store의 상태를 변경하는 역할을 합니다.
store store는 전역 상태를 저장하는 창고와 같은 역할을 수행합니다.

 

1. 상태가 변경되어야 하는 이벤트가 발생하면 Action 객체를 생성합니다.

2. Action 객체를 Dispatch 함수의 인자로 전달합니다. 

3. Dispatch함수는 Action 객체를 Reducer에게 전달해줍니다.

4. Reducer 함수는 전달받은 Action 객체의 값을 토대로 store의 상태를 변경시킵니다.

5. store의 상태가 변경되면 React는 화면을 다시 렌더링합니다.

 

하나하나의 역할을 살펴보면 확실히 분업화되어 인식하기가 쉽네요

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

'코드스테이츠 프론트' 카테고리의 다른 글

코드스테이츠 프론트엔드 44기 부트캠프 수료 후기 SEB FE 44  (5) 2023.09.02
쿠키와 세션과 토큰과 캐시와 인증과 인가  (0) 2023.04.26
UI/UX  (1) 2023.04.13
반딧불반 - [S2U10 Web Server 기초]  (0) 2023.04.06
  1. 🐕 Redux
  2. 👻FLUX의 기본적인 구조
'코드스테이츠 프론트' 카테고리의 다른 글
  • 코드스테이츠 프론트엔드 44기 부트캠프 수료 후기 SEB FE 44
  • 쿠키와 세션과 토큰과 캐시와 인증과 인가
  • UI/UX
  • 반딧불반 - [S2U10 Web Server 기초]
냠냠맨
냠냠맨
프론트엔드 개발 전반을 다루는 기술 블로그입니다.
냠냠맨
React와 TypeScript를 좋아하는 개발자
냠냠맨
전체
오늘
어제
  • all category (433)
    • CMC (0)
    • best (11)
    • 년간회고 (1)
    • cheetsheet (15)
    • 프로젝트 회고 (3)
    • 서평 (3)
    • SEO Study (1)
    • 프로젝트 진행기 (10)
    • testcode (9)
    • yarnberry (7)
    • css (21)
    • typescript (15)
    • redux (7)
    • react (43)
    • Next.js (9)
    • Nestjs (3)
    • javascript (44)
    • programmers (67)
    • leetcode (41)
    • frontend (41)
    • backjoon (1)
    • Next.js Beta Docs 번역 (12)
    • TIL (15)
      • html (3)
    • Network (12)
      • 간단 정리 시리즈 (2)
      • 질답 준비 (0)
    • 자료구조와 알고리즘 (2)
    • CS (4)
      • OS (1)
    • 취업준비 (2)
    • zoom websocket (2)
    • talk (6)
    • 면접대비 (1)
    • 코드스테이츠 프론트 (5)
    • 간헐적 회고 (17)

블로그 메뉴

  • leetcode
  • programmers
  • javascript
  • html
  • css

공지사항

인기 글

태그

  • 코드스테이츠 #프론트엔드
  • LeetCode
  • 말풍선
  • 개발
  • 개발자
  • teosprint
  • 테오의스프린트
  • CSS
  • frontend
  • 프론트엔드
  • JavaScript
  • 주니어개발자
  • border말풍선
  • 테오의스프린트17기

최근 댓글

최근 글

hELLO · Designed By 정상우.
냠냠맨
리액트 리덕스를 간단하게 정리해보자
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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