Search
Duplicate
📒

[React 완벽 가이드] 11-1. Redux 개념알기!

상태
완료
수업
React 완벽 가이드
주제
연관 노트
3 more properties
참고

Redux(리덕스)란?

NOTE
리덕스란 JavaScript 상태관리 라이브러리다! (리액트 없어도 됨)
Redux(리덕스)의 본질은 Node.js 모듈이다.
상태관리 도구가 왜 필요한지는 다음의 짤과 영상을 보자
Redux없으면 화살표 수만큼 전달해줘야함..
자식의 자식의 자식… 의 state를 쉽게 관리해주기 위해서라는 의미 (props로 하면 영상처럼된다.)

Redux의 기본 개념 : 세 가지 원칙

NOTE

1. Single Source of truth

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

2. State is read-only

리액트에서는 setState메소드를 통해서만 상태 변경이 가능했다!
리덕스에서도 Action이라는 객체를 통해서만 변경이 가능

3. Changes are made with pure function

변경은 순수함수로만 가능하다!
reducer와 연관되는 개념
Store - Action - Reducer

Store, Action, Reducer의 의미와 특징

NOTE
다음과 같은 구조로 이루어진다.
움짤버전도 있다

Action

NOTE
const counterReducer = (state = {counter: 0}, action) => { if(action.type === 'increment'){ return{ counter: state.counter + 1 } } return state } const store = redux.createStore(counterReducer); //.. store.dispatch({type: 'increment'}); store.dispatch({type: 'decrement'});
JavaScript
복사
Action의 type에 따라 변화를 일으키는 함수다.
Store에 상태값이 들어가기전 Action에서 전달된 type의 종류에 따라 어떤 상태값으로 Store에 반환되는지 정하는 방식이다.
Store를 만드는 함수인 createStore()의 1번째 파라미터에 들어가며, Reducer의 1번째 파라미터에 초기 상태값, 액션값을 넣어준다.

Reducer

NOTE
// Reducer 생성 const counterReducer = (state = {counter: 0}, action) => { if(action.type === 'increment'){ return{ counter: state.counter + 1 } } return state } const store = redux.createStore(counterReducer);
JavaScript
복사
Action의 type에 따라 변화를 일으키는 함수다.
Store에 상태값이 들어가기전 Action에서 전달된 type의 종류에 따라 어떤 상태값으로 Store에 반환되는지 정하는 방식이다.
Store를 만드는 함수인 createStore()의 1번째 파라미터에 들어가며, Reducer의 1번째 파라미터에 초기 상태값, 액션값을 넣어준다.

Action

Dispatch의 파라미터로 전달되는 데이터다.
Action은 상태값이 어떻게 변할지 행동을 적어놓는 객체이며, type에 따라 다른작업을한다.

Store

NOTE
// Store 생성 const store = redux.createStore(counterReducer); // 리스너 함수 const counterSubscriber = () => { const latestState = store.getState(); console.log(latestState); } // store 구독(상태 업데이트마다 실행) store.subscribe(counterSubscriber);
JavaScript
복사
리덕스에서 가장 중요한 객체이다.
현재 상태를 가지고 있고, Action을 받은 Dispatch함수가 Reducer로 전달한 상태값을 여기에 저장한다.
subscribe으로 상태가 업데이트 될 때 마다 실행한다.
리듀서 1번째 파라미터에는 최초의 상태값이 무조건 정의되어야 한다!

subscribe

Store의 내장 함수 중 하나이다.
subscribe함수안에 listener함수를 파라미터로 넣어서 호출한다.
Store의 데이터가 변할때마다 실행되는 메서드이다.

dispatch

store.dispatch({type: 'increment'}); store.dispatch({type: 'decrement'});
JavaScript
복사
Store의 메서드이고 상태값 업데이트를 실행하는 함수이다.
dispatch가 실행되면 파라미터로 전달받은 ActionReducer의 2번째 파라미터로 전달된다. → 그리고 Reducer 안에있는 코드들로 인해 Store에 값이 저장된다.