Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 네이버페이사기
- Webpack
- js
- 구분
- 세부
- 중고나라
- 정직하게사세요
- 사기
- 유효성검사
- 해외여행
- 정규식
- 중고거래사기
- 스쿠버다이빙
- ES6
- Hooks
- 마사지
- 중고나라사기
- 여행
- JavaScript
- autocomplate
- REACT
- webpack.config.js
- 자동완성
- 삼성무선청소기제트
- 막탄
- 특수문자
- 스노쿨링
- plugin
- 맛사지
Archives
- Today
- Total
Ryu.log
[ React + redux 04 ] 애플리케이션 상태관리 - 리듀서 생성 본문
리듀서 생성
앞서 설명했던 대로 리듀서는 액션의 type에 따라 변화를 일으키는 함수이다.
이 리듀서를 작성 할 때는 최초 변화를 일으키기 전 가지고 있어야 할 초기상태를 정의해야 한다.
reducers 디렉터리에 index.js 파일을 만들고, 액션 타입들을 불러온 후 초기 상태를 선언해보자.
// src/reducers/index.js
import * as types from '../actions/ActionTypes';
const initialState = {
color: 'black',
number: 0
}이 리듀서의 초기 상태로는 color 값과 number 값이 있다. 이제 리듀서 함수를 만들어 보겠다.
리듀서 함수는 state 와 action 을 파라미터로 가지는 함수이며, 그 함수 내부에서 switch 문으로 action.type 에 따라 상태에 다른 변화를 일으킨다.
다시 한 번 강조하지만 state 를 직접 수정하면 절대 안되고,
기존 state 값에 새 상태를 덮어쓴 상태객체를 만드는 방식으로 처리해야 한다는것에 주의하자.
// src/reducers/index.js
import * as types from '../actions/ActionTypes';
//초기 상태를 정의
const initialState = {
color: 'black',
number: 0
}
// 리듀서 함수를 정의한다. 리듀서는 state와 action을 파라미터로 받는다.
// state가 undefined일 때(스토어가 생성될 때) state 기본 값을 initialState로 사용한다.
// action.type에 따라 다른 작업을 하고, 새 상태를 만들어서 반환한다.
// 이때 주의할 점은 state를 직접 수정하면 안 되고,
// 기존 상태 값에 원하는 값을 덮어쓴 새로운 객체를 만들어서 반환해야 한다.
function counter(state = initialState, action) {
switch (action, type) {
case types.INCREMENT:
return {
...state,
number: state.number +1
};
case type.DECREMENT:
return {
...state,
number: state.number -1
};
case type.SET_COLOR:
return {
...state,
color: action.color
};
default :
return state;
}
}
export default counter;이번 프로젝트는 리듀서 하나만으로도 상태를 관리하기 충분하니, 리듀서를 하나만 만들었다.
우선 이렇게 진행하고, 프로젝트 기능을 완성한 후 이 리듀서를 서브리듀서 두개로 관리하는 방법을 알아보자.
'Prev-content' 카테고리의 다른 글
| [ Redux 유용 ] 리액트 App에 손쉽게 store를 연결시켜주는 Provider 컴포넌트 (0) | 2018.09.20 |
|---|---|
| [ React + redux 05 ] 애플리케이션 상태관리 - 스토어 생성 (0) | 2018.09.20 |
| [ React + redux 03 ] 애플리케이션 상태관리 - 액션생성 (0) | 2018.09.19 |
| [ React + redux 03 ] 애플리케이션 상태관리 - Counter 컴포넌트 생성 (0) | 2018.09.14 |
| [ React + redux 02 ] 애플리케이션 상태관리 - 기본적인 틀 생성 (0) | 2018.09.13 |
Comments