본문 바로가기
이론 공부

Redux, Redux toolkit, Redux thunk

by 우주속공간 2024. 5. 16.

Redux, Redux toolkit, Redux thunk란?

Redux는 React 애플리케이션에서 상태를 효율적으로 관리하기 위한 도구이다. 

Redux Toolkit은 Redux의 사용을 보다 쉽고 간편하게 만들어주는 공식적인 Redux 라이브러리이다. 

Redux Thunk는 Redux 미들웨어의 한 종류로 Redux Thunk를 사용하면 Redux 액션 생성자 함수에서 비동기 작업을 처리할 수 있다.

 

즉 Redux는 상태관리도구이며, Redux Toolkit은 Redux의 사용을 쉽게 해주는 라이브러리., Redux Thunk는 Redux에서 비동기 작업을 처리하기 위한 미들웨어이다. 

 

Redux를 사용한 예시

// 액션 타입 정의
const INCREMENT = 'INCREMENT';
const DECREMENT = 'DECREMENT';

// 액션 생성자 함수
const increment = () => ({ type: INCREMENT });
const decrement = () => ({ type: DECREMENT });

// 초기 상태
const initialState = {
  count: 0
};

// 리듀서 함수
const counterReducer = (state = initialState, action) => {
  switch (action.type) {
    case INCREMENT:
      return { ...state, count: state.count + 1 };
    case DECREMENT:
      return { ...state, count: state.count - 1 };
    default:
      return state;
  }
};

 

Redux Toolkit을 사용한 예시

import { createSlice } from '@reduxjs/toolkit';

// 초기 상태
const initialState = {
  count: 0
};

// slice 생성
const counterSlice = createSlice({
  name: 'counter',
  initialState,
  reducers: {
    increment: state => {
      state.count += 1;
    },
    decrement: state => {
      state.count -= 1;
    }
  }
});

// 액션 생성자 함수 추출
export const { increment, decrement } = counterSlice.actions;

// 리듀서 함수 추출
export default counterSlice.reducer;

 

Redux Toolkit을 사용한 코드가 훨씬 간결하고 중복될 수 있는 부분을 줄여주는 것을 볼 수 있다.

Redux Toolkit에서는 createSlice 함수를 사용하여 액션 생성자 함수와 리듀서 함수를 함께 정의할 수 있다.

 

redux와 redux toolkit은 상태관리가 이루어지는 과정은 동일하더라도 redux toolkit을 활용하면 훨씬 더 간결하고 간편하게 정의할 . 수있다.

 

 

Redux Thunk?

리덕스에서는 비동기 작업을 처리하기 위해서는 미들웨어(redux-thunk,redux-saga)를 사용해야한다.

 

기존의 리덕스는 동기적인 흐름으로 동작한다

(액션 객체 생성 → 액션이 발생하면 디스패치가 이를 스토어에 알리고 → 리듀서가 정해진 로직에 의해 액션 처리후 새로운 상태값 반환 )

⇒ 하지만 외부 데이터를 요청해서 그에 따른 응답을 화면에 보여주거나, 시간을 딜레이시킨다던지 이러한 경우에는 동기적인 흐름만으로는 처리하기 힘들다

=> 따라서 리덕스를 사용하면서 비동기 작업을 처리하기 위해서는 미들웨어가 필요하다

 

이러한 미들웨어로 redux-thunk를 사용하게 된다. 

 

이 부분을 좀 더간편하게 만들어주는 상태관리 툴이 있는데 그것이 react-query이다. 

 

https://in-my-universe23.tistory.com/entry/React-Query

 

React Query

React Query란? 상태관리 라이브러리 중 하나. 리액트 앱 내에서 데이터 패칭, 캐싱, 동기화, 서버 데이터 업데이트 등을 쉽게 만들어준다. 사용하는 이유 구글링을 통해 react-query를 사용하는 이유에

in-my-universe23.tistory.com