250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 항해99
- jwt
- 웹팩 기본개념
- toggle-btn
- js배열 알고리즘
- 코어자바스크립트
- 함수형 프로그래밍 특징
- 리액트 렌더링 최적화
- 항해99 미니프로젝트
- 항해99 사전스터디
- next js
- 리액트 메모
- 리액트
- 렌더링 최적화
- 리덕스
- 자바스크립트 엔진 v8
- gql restapi 차이
- 웹 크롤링
- 타입스크립트
- 테스트 코드 툴 비교
- 리액트 메모이제이션
- Js module
- this
- v8 원리
- JS module system
- FP 특징
- 실행컨텍스트
- 항해99 부트캠프
- 알고리즘
- chromatic error
Archives
- Today
- Total
Jaeilit
TIL(9)리덕스 순서 본문
728x90
지난 글
https://jaeilit.tistory.com/30
다시 짚어보기
코드 순서
상태관리
1. action type
2. action function
3. reducer
4. createStore()
5. dispacth()
번외,
6. subscribe 설정
7. 미들웨어 logger
1. action type 정의
// 액션 타입 정의
const INCRE_COUNT = "INCRE_COUNT"
const DECRE_COUNT = "DECRE_COUNT"
2. action function 생성
// 액션 함수 생성
const incre_count = () => {
return { type: "INCRE_COUNT" }
}
const decre_count = () => {
return { type: "DECRE_COUNT" }
}
3. 초기값(initialState) 설정 후 reducer
// 초기 값 설정
const initialState = {
cnt: 1,
}
// 리듀서 설정, 실제로 액션 함수를 핸들링 할 함수
const reducer = (state = initialState, action) => {
switch (action.type) {
case INCRE_COUNT: {
return {
...state,
cnt: state.cnt + 1,
}
}
case DECRE_COUNT: {
return {
...state,
cnt: state.cnt - 1,
}
}
default:
return state
}
}
4. createStore()
const store = createStore(reducer)
// 스토어를 만들어준다.
// createStore(리듀서)
// 여러개의 리듀서라면 combinereducer 로 묶어 줄 수도 있다.
// 리덕스 기능
// {
// dispatch: [Function: dispatch],
// subscribe: [Function: subscribe],
// getState: [Function: getState],
// replaceReducer: [Function: replaceReducer],
// '@@observable': [Function: observable]
// }
5. dispatch 해보기
console.log(store.getState())
// state 보기
// { cnt: 1 }
console.log(store.dispatch(incre_count()))
// +1 의 내용이 담긴 디스패치 액션 호출
// state 호출하기 store.dispatch를 통해서 호출하는데 호출 할 때는 액션 함수를 넣어준다.
// { type: 'ADD_COUNT' }
console.log(store.getState())
// state 호출로 인해 cnt 가 + 1 된 상태를 보여줌
// { cnt: 2 }
console.log(store.dispatch(decre_count()))
// -1 을 해 줄 액션함수 디스패치로 호출
// state 호출하기 store.dispatch를 통해서 호출하는데 호출 할 때는 액션 함수를 넣어준다.
// { type: 'ADD_COUNT' }
console.log(store.getState())
// 다시 -1가 된 모습
// { cnt: 1 }
7. 구독 설정 subscribe
store.subscribe(() => {
console.log(store.getState())
})
// 총 + 5번
store.dispatch(incre_count())
store.dispatch(incre_count())
store.dispatch(incre_count())
store.dispatch(incre_count())
store.dispatch(incre_count())
// 총 -3 번
store.dispatch(decre_count())
store.dispatch(decre_count())
store.dispatch(decre_count())
store.dispatch(decre_count())
// 출력 값
// {cnt: 2}
// {cnt: 3}
// {cnt: 4}
// {cnt: 5}
// {cnt: 6}
// {cnt: 5}
// {cnt: 4}
// {cnt: 3}
// {cnt: 2}
8. 미들웨어 applyMiddelware, logger
const reduxlogger = require("redux-logger")
const logger = reduxlogger.createLogger()
const store = createStore(reducer, applyMiddleware(logger))
// 총 + 5번
store.dispatch(incre_count())
store.dispatch(incre_count())
store.dispatch(incre_count())
store.dispatch(incre_count())
store.dispatch(incre_count())
// 총 -3 번
store.dispatch(decre_count())
store.dispatch(decre_count())
store.dispatch(decre_count())
store.dispatch(decre_count())
// 출력 값 :
// action INCRE_COUNT @ 23:05:32.343
// prev state { cnt: 1 }
// action { type: 'INCRE_COUNT' }
// next state { cnt: 2 }
// action INCRE_COUNT @ 23:05:32.347
// prev state { cnt: 2 }
// action { type: 'INCRE_COUNT' }
// next state { cnt: 3 }
// action INCRE_COUNT @ 23:05:32.348
// prev state { cnt: 3 }
// action { type: 'INCRE_COUNT' }
// next state { cnt: 4 }
// action INCRE_COUNT @ 23:05:32.351
// prev state { cnt: 4 }
// action { type: 'INCRE_COUNT' }
// next state { cnt: 5 }
// action INCRE_COUNT @ 23:05:32.352
// prev state { cnt: 5 }
// action { type: 'INCRE_COUNT' }
// next state { cnt: 6 }
// action DECRE_COUNT @ 23:05:32.353
// prev state { cnt: 6 }
// action { type: 'DECRE_COUNT' }
// next state { cnt: 5 }
// action DECRE_COUNT @ 23:05:32.355
// prev state { cnt: 5 }
// action { type: 'DECRE_COUNT' }
// next state { cnt: 4 }
// action DECRE_COUNT @ 23:05:32.356
// prev state { cnt: 4 }
// action { type: 'DECRE_COUNT' }
// next state { cnt: 3 }
// action DECRE_COUNT @ 23:05:32.357
// prev state { cnt: 3 }
// action { type: 'DECRE_COUNT' }
// next state { cnt: 2 }
출력 설명 :
action 호출 된 타입명과 시간
이전 값 prev state
액션 호출
변한 값 next state
를 볼 수 있다.
728x90
'TIL' 카테고리의 다른 글
TIL <defaultProps> (0) | 2021.10.01 |
---|---|
TIL(10)리덕스 미들웨어, mapStateToProps (0) | 2021.09.30 |
TIL(8)Friebase (0) | 2021.09.25 |
TIL(7)REDUX_1편 (0) | 2021.09.24 |
TIL(6) 배열메서드 Array.map(forEach), filter, concat, from (0) | 2021.09.21 |