이번에는 요청의 로딩 상태를 관리하는 작업을 개선하겠습니다. 기존에는 리듀서 내부에서 각 요청에 관련된 액션이 디스패치될 때마다 로딩 상태를 변경해 주었는데요. 이 작업을 로딩 상태만 관리하는 리덕스 모듈을 따로 생성하여 처리하겠습니다.

    modules/loading.js

    import { createAction, handleActions } from 'redux-actions';
    
    const START_LOADING = 'loading/START_LOADING';
    const FINISH_LOADING = 'loading/FINISH_LOADING';
    
    /*
     요청을 위한 액션 타입을 payload 설정합니다(: "sample/GET_POST").
    */
    
    export const startLoading = createAction(
      START_LOADING,
      requestType => requestType
    );
    
    export const finishLoading = createAction(
      FINISH_LOADING,
      requestType => requestType
    );
    
    const initialState = {};
    
    const loading = handleActions(
      {
        [START_LOADING]: (state, action) => ({
          ...state,
          [action.payload]: true
        }),
        [FINISH_LOADING]: (state, action) => ({
          ...state,
          [action.payload]: false
        })
      },
      initialState
    );
    
    export default loading;

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.