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
- 세부
- REACT
- webpack.config.js
- 마사지
- 스쿠버다이빙
- 삼성무선청소기제트
- autocomplate
- 스노쿨링
- 구분
- 유효성검사
- plugin
- 막탄
- 정규식
- 중고나라사기
- 중고거래사기
- 사기
- Webpack
- 특수문자
- 맛사지
- js
- 해외여행
- 네이버페이사기
- 여행
- JavaScript
- 중고나라
- ES6
- 자동완성
- Hooks
- 정직하게사세요
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