Redux는 JavaScript 애플리케이션의 상태를 관리하기 위한 상태 관리 라이브러리입니다.
Redux를 사용하면 애플리케이션의 상태를 예측 가능하게 만들고, 상태의 변화를 추적하고, 상태를 쉽게 업데이트할 수 있습니다.
Redux는 React와 함께 사용되는 것이 일반적이지만 다른 라이브러리나 프레임워크에서도 사용할 수 있습니다.
Redux의 주요 개념은 다음과 같습니다:
스토어 (Store)
액션 (Action)
리듀서 (Reducer)
디스패치 (Dispatch)
구독 (Subscribe)
아래에 Redux의 간단한 코드 예시를 제공합니다.
먼저, 프로젝트에 Redux를 설치합니다.
npm install redux react-redux
// src/store.js
import { createStore } from 'redux';
const initialState = {
count: 0
};
function reducer(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;
}
}
const store = createStore(reducer);
export default store;
// src/actions.js
export const increment = () => {
return {
type: 'INCREMENT'
};
};
export const decrement = () => {
return {
type: 'DECREMENT'
};
};
// src/App.js
import React from 'react';
import { connect } from 'react-redux';
import { increment, decrement } from './actions';
function App(props) {
return (
<div>
<h1>Count: {props.count}</h1>
<button onClick={props.increment}>Increment</button>
<button onClick={props.decrement}>Decrement</button>
</div>
);
}
const mapStateToProps = state => {
return {
count: state.count
};
};
export default connect(mapStateToProps, { increment, decrement })(App);
이 예시에서는 간단한 카운터 앱을 만들었습니다.
redux 패키지를 사용하여 스토어를 생성하고, 액션을 정의하였습니다.
그리고 리액트 컴포넌트에서 스토어의 상태를 사용하고 액션을 디스패치하기 위해 react-redux의 connect 함수를 사용했습니다.