addTodo
와 deleteTodo
액션은 각각 Todo 항목 추가 및 삭제를 처리합니다.Redux Toolkit은 Redux의 공식 도구 모음으로, Redux를 더 쉽게 사용할 수 있도록 설계되었습니다. 주요 장점은 다음과 같습니다:
createSlice
를 사용하여 액션과 리듀서를 자동으로 생성할 수 있습니다.아래는 Redux Toolkit을 사용하여 Todo 추가 및 삭제 기능을 구현한 예제입니다.
먼저, Redux Toolkit을 설치합니다. npm을 사용하여 설치할 수 있습니다.
npm install @reduxjs/toolkit react-redux
import { configureStore, createSlice } from '@reduxjs/toolkit';
import { Provider, useDispatch, useSelector } from 'react-redux';
import React from 'react';
import ReactDOM from 'react-dom';
// createSlice를 사용하여 리듀서 및 액션 생성
const todoSlice = createSlice({
name: 'todos',
initialState: [],
reducers: {
addTodo: (state, action) => {
state.push(action.payload);
},
deleteTodo: (state, action) => {
return state.filter((_, index) => index !== action.payload);
}
}
});
// 스토어 생성
const store = configureStore({
reducer: {
todos: todoSlice.reducer
}
});
// TodoInput 컴포넌트
const TodoInput = () => {
const [inputValue, setInputValue] = React.useState('');
const dispatch = useDispatch();
const handleAddTodo = () => {
if (inputValue) {
dispatch(todoSlice.actions.addTodo(inputValue));
setInputValue('');
}
};
return (
<div>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
placeholder="할 일을 입력하세요"
/>
<button onClick={handleAddTodo}>추가하기</button>
</div>
);
};
// TodoList 컴포넌트
const TodoList = () => {
const todos = useSelector((state) => state.todos);
const dispatch = useDispatch();
const handleDeleteTodo = (index) => {
dispatch(todoSlice.actions.deleteTodo(index));
};
return (
<ul>
{todos.map((todo, index) => (
<li key={index}>
{todo}
<button onClick={() => handleDeleteTodo(index)}>삭제</button>
</li>
))}
</ul>
);
};
// 메인 App 컴포넌트
const App = () => {
return (
<Provider store={store}>
<h1>Todo 애플리케이션</h1>
<TodoInput />
<TodoList />
</Provider>
);
};
// ReactDOM을 사용하여 렌더링
ReactDOM.render(<App />, document.getElementById('root'));
configureStore: 스토어를 생성할 때 configureStore를 사용합니다. 이 함수는 Redux DevTools와 같은 기본 설정을 자동으로 처리합니다.
컴포넌트: TodoInput과 TodoList 컴포넌트는 Redux와 유사하게 작동하지만, 액션을 디스패치할 때 Redux Toolkit에서 todoSlice.actions를 사용합니다.
Redux Toolkit을 사용하면 Redux 애플리케이션을 더 간편하게 설정하고 관리할 수 있습니다. 코드가 더 간결하고 이해하기 쉬워지며, 불변성 관리가 자동으로 처리됩니다.