git : https://github.com/leeyulgok/5-Day1
npm install redux react-redux @reduxjs/toolkit redux-logger
- userSlice : Redux Toolkit에서 제공하는 createSlice 함수를 사용하여 정의된 Redux 슬라이스.
- store : Redux의 스토어. userSlice에서 정의한 리듀서와 함께 Redux DevTools와 미들웨어를 설정하여 애플리케이션의 상태 관리
- App : React 애플리케이션의 메인 컴포넌트
- index : React 애플리케이션을 렌더링하고, Redux의 Provider 컴포넌트를 사용하여 애플리케이션에 Redux 스토어를 제공
import { configureStore } from "@reduxjs/toolkit";
import userReducer from '../reducer/userSlice'
const store = configureStore({
reducer: {
user: userReducer,
},
});
export default store;
import { createSlice } from "@reduxjs/toolkit";
const initialState = {
name: "",
};
const userSlice = createSlice({
name: "user",
initialState,
reducers: {
setName: (state, action) => {
state.name = action.payload;
},
},
});
export const { setName } = userSlice.actions;
export default userSlice.reducer;
짚고 넘어가기 Redux Toolkit과 Redux Slice
우선 Redux Toolkit은 Redux의 공식적인 도구 모음이다. Redux를 더욱 간편하게 사용할 수 있게 해준다고 보면된다.
Redux Slice는 이 도구 모음 중에 하나로, 기존의 Redux에서는 액션 타입, 액션 생성자 함수, 리듀서 함수를 각각 작성해야 했습니다. 하지만 Redux Slice를 사용하면 액션과 리듀서를 한 번에 정의할 수 있다.
import React, {useState} from "react";
import { useDispatch, useSelector } from "react-redux";
import { setName } from "./reducer/userSlice";
const App = () => {
const dispatch = useDispatch();
const userName = useSelector((state) => state.user.name);
const [inputName, setInputName] = useState('');
const handleNameChange = () => {
dispatch(setName(inputName));
setInputName('');
};
const handleInputChange = (event) => {
setInputName(event.target.value);
};
return (
<div>
<h1>Hello, {userName}</h1>
<input
type="text"
id="name"
value={inputName}
onChange={handleInputChange}
/>
<button onClick={handleNameChange}>Change Name</button>
</div>
);
};
export default App;
import { useDispatch, useSelector } from "react-redux";
import { setName } from "./reducer/userSlice";
import React from 'react';
import { createRoot } from 'react-dom/client';
import { Provider } from 'react-redux';
import store from './store/store';
import App from './App';
const rootElement = document.getElementById('root');
const app = (
<Provider store={store}>
<App />
</Provider>
);
const root = createRoot(rootElement);
root.render(app);
본 후기는 유데미-스나이퍼팩토리 10주 완성 프로젝트캠프 학습 일지 후기로 작성 되었습니다.
#프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프