본문 바로가기

웹개발

Redux 상태 관리 패턴과 사용 방법

Redux는 JavaScript 애플리케이션에서 상태를 효과적으로 관리하기 위한 라이브러리로, 특히 React와 함께 사용되어 UI 상태를 관리하는 데 널리 사용됩니다. 이 글에서는 Redux의 기본 개념과 사용 방법에 대해 자세히 알아보겠습니다.

Redux란 무엇인가?

Redux는 상태 관리 라이브러리로, 애플리케이션의 상태를 하나의 중앙 저장소(store)에 저장하고, 상태 변경은 불변성을 유지하면서 액션(action)을 통해 이루어집니다. Redux의 주요 개념은 다음과 같습니다:

  • Store: 애플리케이션의 상태를 저장하는 객체. 모든 상태 정보는 단일 스토어에 저장됩니다.

  • Action: 상태 변경을 나타내는 객체. 액션은 일반적으로 유형(type)과 데이터(payload)를 포함합니다.

  • Reducer: 현재 상태와 액션을 기반으로 새로운 상태를 생성하는 순수 함수. 액션을 처리하고 상태를 업데이트합니다.

  • Dispatch: 액션을 스토어에 보내는 메서드. 액션을 디스패치하면 리듀서가 실행되어 상태가 업데이트됩니다.

Redux 사용 방법

Redux를 사용하여 상태를 관리하는 기본적인 단계는 다음과 같습니다:

1. 의존성 설치

Redux와 React-Redux 라이브러리를 프로젝트에 추가합니다.

npm install redux react-redux

2. 스토어 생성

Redux 스토어를 생성하고 루트 리듀서를 등록합니다.

import { createStore } from 'redux';
import rootReducer from './reducers';

const store = createStore(rootReducer);

3. 액션 정의

액션 유형과 액션 생성자 함수를 정의합니다.

// 액션 유형 정의
const ADD_TODO = 'ADD_TODO';

// 액션 생성자 함수
const addTodo = (text) => {
  return {
    type: ADD_TODO,
    payload: text,
  };
};

4. 리듀서 작성

리듀서를 작성하여 상태 변경 로직을 처리합니다.

const initialState = {
  todos: [],
};

const rootReducer = (state = initialState, action) => {
  switch (action.type) {
    case ADD_TODO:
      return {
        ...state,
        todos: [...state.todos, action.payload],
      };
    default:
      return state;
  }
};

5. 컴포넌트에서 상태 사용

React 컴포넌트에서 connect 함수를 사용하여 스토어와 연결하고 상태를 사용합니다.

import { connect } from 'react-redux';

const TodoList = ({ todos }) => {
  return (
    <ul>
      {todos.map((todo, index) => (
        <li key={index}>{todo}</li>
      ))}
    </ul>
  );
};

const mapStateToProps = (state) => {
  return {
    todos: state.todos,
  };
};

export default connect(mapStateToProps)(TodoList);

마무리

Redux는 복잡한 상태 관리를 단순화하고, 예측 가능하고 확장 가능한 애플리케이션을 만드는 데 도움이 되는 강력한 도구입니다. Redux의 기본 개념을 숙지하고 사용 방법을 익히면 복잡한 애플리케이션의 상태 관리를 효율적으로 수행할 수 있습니다. Redux에 대한 더 자세한 내용은 관련 문서와 튜토리얼을 참조하시기 바랍니다.