Redux Thunk를 이용한 캘린더 애플리케이션 구현하기

캘린더 애플리케이션은 사용자가 일정을 추가하고 관리할 수 있는 기능을 제공합니다. 이번 글에서는 Redux Thunk를 사용하여 React로 캘린더 애플리케이션을 구현하는 방법에 대해 알아보겠습니다.

Redux Thunk란?

Redux Thunk는 Redux 애플리케이션에서 비동기 작업을 처리하기 위한 미들웨어입니다. Thunk 미들웨어를 통해 액션 크리에이터는 함수를 반환할 수 있으며, 이 함수는 dispatch 메서드와 getState 메서드를 인자로 받을 수 있습니다. 이를 통해 비동기 작업을 처리하고, 액션을 디스패치할 수 있습니다.

캘린더 애플리케이션 구조

캘린더 애플리케이션은 다음과 같은 구조로 이루어집니다:

액션 크리에이터 함수 정의하기

먼저, redux/actions.js 파일에서 액션 크리에이터 함수를 정의해야 합니다. 예를 들어, 새로운 일정을 추가하는 액션을 만들어보겠습니다.

import { ADD_EVENT } from './constants';

export const addEvent = (date, title) => {
  return (dispatch) => {
    // 비동기 작업 수행
    // ...

    // 액션 디스패치
    dispatch({ type: ADD_EVENT, payload: { date, title } });
  };
};

여기서 ADD_EVENT는 상수로 정의된 액션 타입입니다. 비동기 작업이 필요한 경우, 해당 작업을 처리하고 액션을 디스패치할 수 있습니다.

리듀서 함수 정의하기

다음으로, redux/reducers.js 파일에서 리듀서 함수를 정의해야 합니다. 해당 리듀서는 액션에 따라 상태를 업데이트합니다. 예를 들어, 일정을 추가하는 액션에 대한 리듀서를 작성해보겠습니다.

import { ADD_EVENT } from './constants';

const initialState = {
  events: [],
};

export const calendarReducer = (state = initialState, action) => {
  switch (action.type) {
    case ADD_EVENT:
      return {
        ...state,
        events: [...state.events, action.payload],
      };
    default:
      return state;
  }
};

이 예제에서는 events라는 배열을 초기 상태로 갖고 있으며, ADD_EVENT 액션이 발생할 때마다 해당 일정을 배열에 추가합니다.

스토어 생성하기

마지막으로, redux/store.js 파일에서 Redux 스토어를 생성해야 합니다. Redux Thunk 미들웨어를 적용하여 비동기 액션 처리를 지원할 수 있습니다.

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import { calendarReducer } from './reducers';

const store = createStore(calendarReducer, applyMiddleware(thunk));

export default store;

위의 예에서는 createStore 함수를 사용하여 스토어를 생성하고, 미들웨어로 Redux Thunk를 적용했습니다.

마무리

이제 Redux Thunk를 이용하여 캘린더 애플리케이션을 구현하는 방법에 대해 알아보았습니다. Redux Thunk를 사용하면 비동기 작업을 처리하는 데 용이하며, 액션 크리에이터 함수를 통해 효율적인 상태 관리를 할 수 있습니다.

더 많은 Redux Thunk 사용 예제 및 자세한 내용은 Redux 공식 문서를 참고하시기 바랍니다.

References: