반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 공간복잡도
  • GraphQL
  • 기계식키보드 #nuphy
  • 전공 요약 #데이터베이스
  • 삼성SDS
  • 알고리즘
  • 전공요약
  • 면접
  • 언어
  • 삼성SW역량테스트
  • Next.js #graphql #tailwind.css
  • 오블완
  • 나의 해방일지
  • A형
  • 티스토리챌린지
  • 백준
  • C++
  • 전공 요약 #네트워크
  • 전공 요약 #운영체제
  • nextjs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

React Redux (리액트 리덕스)
프론트엔드 개발/상태관리 라이브러리

React Redux (리액트 리덕스)

2021. 11. 18. 23:58
728x90
반응형

리덕스란?

 


리액트 뿐만 아니라 다양한 프레임워크에서 사용되는 상태관리 라이브러리이다.

리액트는 MVC (Model View Controller) 중에 View만 담당하게 되는데

나머지 Model, Controller에 해당하는 역할을 해주는 것이 Redux이다.

 

사실 이 MVC 페턴은 어플리케이션이 매우 복잡해져서

동시에 여러 Model을 업데이트하면 예상치 못한 일이 일어날 수 있는 문제가 있다.
왜냐면 너무 규모가 커지면 Model 이 다른 Model을 업데이트하거나 View가 Model을 업데이트 하거나 하는 식으로 거미줄 처럼 서로가 엮이게 되기 때문이다. 

그래서 Flux 패턴이라는 것이 등장하였으며, Redux는 이 Flux 페턴을 구현한 것이다.

 

이 Flux 패턴은 어플리케이션을 단방향으로 일관성 있게 동작하게 해준다.

코드의 흐름을 예측하기 쉽게 해주고 위와 같이 거미줄 처럼 엮이는 문제를 방지해준다.

 

사용 목적


1. 여러 State를 동시적으로 업데이트 해야할 때 비정상적인 상황을 방지하기 위해

 

2. 컴포넌트 사이 state를 전달할 때 너무 깊이(3단계 이상) 전달해야 하는 경우

 

 

용어


  1. 액션 (Action)
    상태변화를 일으킬 하나의 행동이다. (1을 더해주세요, 1을 빼주세요, a를 제거해주세요)
    타입(type)과 데이터(payload)를 가진다.
  2. 디스패치 (dispatch)
    액션에 해당하는 Callbcack을 실행해준다.
  3. 스토어 (Store)
    모든 상태와 상태변화를 시키는 함수가 정의되어있는 곳
  4. 컨트롤러 뷰 (Controller view, view) 
    구독된 스토어로 부터 변경된 상태를 전달받아서 하위 뷰들에게 새로운 상태를 넘겨줌

 

원칙


  1. 하나의 애플리케이션 안에는 하나의 스토어(store)만 존재한다.
    여러 스토어를 구독하여 발생할 수 있는 혼란을 피하기 위해 하나의 스토어만 사용한다.

  2. 상태는 읽기전용이다.
    성능 때문에 상태 변경 여부 확인 시 Shallow Compare 를 하므로 불변성을 유지해야하므로
    기존 상태는 버리고 새로운 상태 객체를 만들어서 업데이트 해줘야한다.

  3. 리듀서는 순수함수여야 한다.
    똑같은 파라미터로 호출된 리듀서는 항상 동일 값을 반환해야 한다.

 

동작 방식


View에서 action 수행 → dispatch 는 action에 해당되는 Callback 수행 → state 업데이트

 

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

'프론트엔드 개발 > 상태관리 라이브러리' 카테고리의 다른 글

redux persist : 새로 고침 시에도 상태 유지  (0) 2022.01.29
React RTK Query 캐시  (0) 2022.01.27
React Redux Tookit 사용 방법  (0) 2022.01.25
    '프론트엔드 개발/상태관리 라이브러리' 카테고리의 다른 글
    • redux persist : 새로 고침 시에도 상태 유지
    • React RTK Query 캐시
    • React Redux Tookit 사용 방법
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바