Redux Thunk를 사용하여 특정 시간마다 데이터 업데이트하기

최근에는 웹 애플리케이션의 데이터 업데이트를 자동화하는 것이 중요해지고 있습니다. 이를 위해 Redux Thunk라는 미들웨어를 사용하여 특정 시간마다 데이터를 업데이트할 수 있습니다. 이 블로그 포스트에서는 Redux Thunk를 사용하여 특정 시간마다 데이터를 업데이트하는 방법에 대해 알아보겠습니다.

Redux Thunk란?

Redux Thunk는 Redux의 미들웨어 중 하나로, 액션 생성자가 함수를 반환할 수 있도록 해줍니다. 이렇게 반환된 함수는 Redux 스토어의 dispatch 메소드를 사용하여 비동기 작업을 수행할 수 있습니다. 이를 통해 axios로 API 호출이나 타이머를 사용한 주기적인 작업 등을 손쉽게 처리할 수 있습니다.

Redux Thunk를 사용한 특정 시간마다 데이터 업데이트

먼저, Redux Thunk를 설치해야 합니다. 아래 명령어를 사용해 Redux Thunk를 설치하세요.

npm install redux-thunk

그리고 Redux 스토어를 생성할 때 Redux Thunk를 미들웨어로 등록해야 합니다. 이를 위해 스토어를 생성하는 파일에서 아래와 같이 코드를 수정하세요.

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

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

export default store;

이제 특정 시간마다 데이터를 업데이트하기 위해 액션 생성자와 Redux Thunk를 함께 사용할 수 있습니다. 예를 들어, 5초마다 데이터를 업데이트하는 액션 생성자를 작성하고 싶다면 다음과 같이 코드를 작성할 수 있습니다.

import axios from 'axios';

export const updateData = () => {
  return (dispatch) => {
    setInterval(() => {
      axios.get('/api/data')
        .then(response => {
          dispatch({
            type: 'UPDATE_DATA',
            payload: response.data
          });
        })
        .catch(error => {
          console.log(error);
        });
    }, 5000);
  };
};

위 예제에서는 5초마다 axios를 사용하여 ‘/api/data’ 엔드포인트로 GET 요청을 보내고, 응답을 받으면 UPDATE_DATA 액션을 디스패치하여 데이터를 업데이트합니다. 만약 에러가 발생한다면 에러를 콘솔에 출력합니다.

이제 액션 생성자를 컴포넌트에서 호출하여 데이터를 주기적으로 업데이트할 수 있습니다.

import React, { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { updateData } from './actions';

const App = () => {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(updateData());
  }, []);

  // 컴포넌트 내용 생략...
};

export default App;

위 예제에서는 useEffect 훅을 사용하여 컴포넌트가 마운트될 때 updateData 액션 생성자를 호출합니다. 이제 Redux 스토어는 5초마다 데이터를 업데이트할 것입니다.

마무리

Redux Thunk를 사용하면 Redux 애플리케이션에서 비동기 작업을 쉽게 처리할 수 있습니다. 이를 활용하여 특정 시간마다 데이터를 업데이트하는 기능을 구현하는 방법을 알아보았습니다. Redux Thunk의 사용법을 익혀서 웹 애플리케이션의 데이터 업데이트를 자동화해보세요!

참고 자료: Redux Thunk GitHub 페이지