redux
: 상태 관리를 하기 위한 라이브러리
앱의 상태 전부는 하나의 저장소(store
) 안에 있는 객체 트리에 저장된다.
상태 트리를 변경하는 유일한 방법은 어떤 행동이 일어날지에 해당하는 action
이다.
action에 따라 상태를 어떻게 변경할지 명시하기 위한 함수를 작성하고 이를 reducer
함수라고한다.
리덕스의 3가지 원칙
리덕스 사용하기위한 스크립트와 선언
<script src="https://www.unpkg.com/redux@4.2.1/dist/redux.js"></script>
const { createStore } = Redux;
Reducer 함수 작성
(state, action) => state 형태의 순수함수 형태로 리듀서 함수를 작성한다.
swtich문 말고도 어떤 형태로든 팀 내의 컨벤션에 맞게 작성할 수 있다.
주의 사항
state 객체는 변경해서 안되고 상태가 바뀌면 반드시 새로운 객체를 생성해서 반환한다.
일반적으로는 spread 연산자를 이용할 수 있다. 주소값 일치 여부로 변경 여부를 확인하기 때문이다.
(state 현재의 상태값, action 어떤동작을할지) => 변화시키고싶은 state를 반환
action
: 스토어에 운반할 데이터를 말하며 주문서와 비슷한 개념
{
type : 'ACTION_NAME', // 필수
payload : { name : '홍길동', age : 20 } // 옵션
}
function counter(state = 0, action) {
switch(action.type) {
case 'INCREMENT' :
return state + 1;
case 'DECREMENT' :
return state - 1;
default :
return state;
}
}
리덕스 저장소(store) 생성
: 앱의 상태를 보관
통상 store라고하며 store가 제공하는 api는
const store = createStore(counter);
store.subscribe(() => console.log(store.getState()));
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'DECREMENT' });