/* 액션 타입 만들기 */ // Ducks 패턴을 따를땐 액션의 이름에 접두사를 넣어주세요. // 이렇게 하면 다른 모듈과 액션 이름이 중복되는 것을 방지 할 수 있습니다. constSET_DIFF = "counter/SET_DIFF"; constINCREASE = "counter/INCREASE"; constDECREASE = "counter/DECREASE";
Action 생성 함수
/* 액션 생성함수 만들기 */ // 액션 생성함수를 만들고 export 키워드를 사용해서 내보내주세요. exportconstsetDiff = (diff) => ({ type: SET_DIFF, diff }); exportconstincrease = () => ({ type: INCREASE }); exportconstdecrease = () => ({ type: DECREASE });
Reducer
/* 초기 상태 선언 */ const initialState = { number: 0, diff: 1, };
// If you want to start measuring performance in your app, pass a function // to log results (for example: reportWebVitals(console.log)) // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals reportWebVitals();
functionCounterContainer() { // useSelector는 리덕스 스토어의 상태를 조회하는 Hook입니다. // state의 값은 store.getState() 함수를 호출했을 때 나타나는 결과물과 동일합니다. const { number, diff } = useSelector((state) => ({ number: state.counter.number, diff: state.counter.diff, }));
// useDispatch 는 리덕스 스토어의 dispatch 를 함수에서 사용 할 수 있게 해주는 Hook 입니다. const dispatch = useDispatch(); // 각 액션들을 디스패치하는 함수들을 만드세요 constonIncrease = () => dispatch(increase()); constonDecrease = () => dispatch(decrease()); constonSetDiff = (diff) => dispatch(setDiff(diff));