박민정

[feat] Connect Redux to App

This diff is collapsed. Click to expand it.
...@@ -6,12 +6,17 @@ ...@@ -6,12 +6,17 @@
6 "@testing-library/jest-dom": "^5.12.0", 6 "@testing-library/jest-dom": "^5.12.0",
7 "@testing-library/react": "^11.2.7", 7 "@testing-library/react": "^11.2.7",
8 "@testing-library/user-event": "^12.8.3", 8 "@testing-library/user-event": "^12.8.3",
9 + "antd": "^4.16.1",
9 "axios": "^0.21.1", 10 "axios": "^0.21.1",
10 "http-proxy-middleware": "^2.0.0", 11 "http-proxy-middleware": "^2.0.0",
11 "react": "^17.0.2", 12 "react": "^17.0.2",
12 "react-dom": "^17.0.2", 13 "react-dom": "^17.0.2",
14 + "react-redux": "^7.2.4",
13 "react-router-dom": "^5.2.0", 15 "react-router-dom": "^5.2.0",
14 "react-scripts": "4.0.3", 16 "react-scripts": "4.0.3",
17 + "redux": "^4.1.0",
18 + "redux-promise": "^0.6.0",
19 + "redux-thunk": "^2.3.0",
15 "web-vitals": "^1.1.2" 20 "web-vitals": "^1.1.2"
16 }, 21 },
17 "scripts": { 22 "scripts": {
......
1 +// Redux에 있는 Store에 Reducer들이 여러가지 있을 수 있다.
2 +// -> why? : Reducer 안에서 하는 일은
3 +// state가 어떻게 변하는지를 보여준 다음, 변한 마지막 값을 return 해주는 것.
4 +// 웹서비스를 제작하면서 user state, comment state ... 등등 다양한 기능에 대한 state들이 존재할 수 있고
5 +// 각각 state마다 reducer가 있어서 user reducer, comment reducer ... 등등 다양한 reducer들이 존재할 수 있음.
6 +// ------------------------------------
7 +// 이렇게 나눠진 다양한 reducer을 combineReducers을 통해 rootReducer에서 하나로 합쳐주는 기능을 만들 것임.
8 +import { combineReducers } from 'redux';
9 +// import user from './user_reducer'; // user(회원가입, 로그인, 인증, 로그아웃 기능이 있음) reducer
10 +// import comment from './comment_reducer'; // comment기능이 있을 때 reducer
11 +
12 +const rootReducer = combineReducers( {
13 +
14 +})
15 +
16 +// 다른 곳에서도 rootReducer을 쓸 수 있도록
17 +export default rootReducer;
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,15 +3,33 @@ import ReactDOM from 'react-dom'; ...@@ -3,15 +3,33 @@ import ReactDOM from 'react-dom';
3 import './index.css'; 3 import './index.css';
4 import App from './App'; 4 import App from './App';
5 import reportWebVitals from './reportWebVitals'; 5 import reportWebVitals from './reportWebVitals';
6 +import { Provider } from 'react-redux' // app에 redux를 연결시켜주기 위해 redux에서 제공하는 provider 사용
7 +import { createStore } from 'redux'; // redux에서 createStore 가져옴.
8 +import { applyMiddleware } from 'redux'; // object만 받는 store가 promise나 functions도 받기 위해 middleware을 사용함
9 +import promiseMiddleware from 'redux-promise';
10 +import ReduxThunk from 'redux-thunk';
11 +import Reducer from './_reducers/index'
12 +
13 +import 'antd/dist/antd.css';
14 +
15 +
16 +const createStoreWithMiddleware = applyMiddleware()
6 17
7 ReactDOM.render( 18 ReactDOM.render(
8 - <React.StrictMode> 19 + // App에 Redux를 연결
20 + <Provider
21 + store={createStoreWithMiddleware(Reducer,
22 + // chrome REDUX_DEVTOOLS extension 사용하기 위해서
23 + window.__REDUX_DEVTOOLS_EXTENSIONS__ &&
24 + window.__REDUX_DEVTOOLS_EXTENSIONS__()
25 + )}
26 + >
27 +
9 <App /> 28 <App />
10 - </React.StrictMode>, 29 + </Provider>
11 - document.getElementById('root')
12 ); 30 );
13 31
14 // If you want to start measuring performance in your app, pass a function 32 // If you want to start measuring performance in your app, pass a function
15 -// to log results (for example: reportWebVitals(console.log)) 33 +// to log resu lts (for example: reportWebVitals(console.log))
16 // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 34 // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17 reportWebVitals(); 35 reportWebVitals();
......