개념/React(23.06.12~)

[React] [CRA] 프로그램 세팅

Lethargin 2023. 7. 6. 14:45

<기본 react 설정>

1.설치

-yarn create react-app 파일명

-절대경로 지정 : [jsconfig.json]

{
	"compilerOptions": {
		"baseUrl": "src"
	},
	"include": ["src"]
}

-yarn add redux react-redux

-yarn add react-router-dom (페이지)

-yarn add @reduxjs/toolkit (RTK 쓸 때만)

2.폴더 설정

❶configStore.js  (얘를 해야 index.js에서 store import 가능)

import { createStore } from "redux";
import { combineReducers } from "redux";
import { auth } from "redux/modules/auth";
import comments from "redux/modules/comments";
import contents from "redux/modules/contents";
import myProfileReducer from "redux/modules/myprofile";

const rootReducer = combineReducers({
  auth,
  comments: comments,
  contents: contents,
  myprofile: myProfileReducer,
});

const store = createStore(rootReducer);

export default store;

 

❷index.js

import React from "react";
import ReactDOM from "react-dom/client";
import App from "App";

import { Provider } from "react-redux";
import store from "redux/config/configStore"; 👈

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <>
    <Provider store={store}>
      <App />
    </Provider>
  </>
);

❸app.jsx + Router.js

import { BrowserRouter, Route, Routes } from "react-router-dom";
//
import Main from "pages/Main";
import ContentsForm from "pages/ContentsForm";
import Detail from "pages/Detail";
import MyProfile from "pages/MyProfile";
import Header from "components/ui/Header";

const Router = () => {
  return (
    <BrowserRouter>
      <Header />
      <Routes>
        <Route path="/" element={<Main />} />
        <Route path="/contentsForm" element={<ContentsForm />} />
        <Route path="/detail/:contentsId" element={<Detail />} />
        <Route path="/profile/:userId" element={<MyProfile />} />
      </Routes>
    </BrowserRouter>
  );
};

export default Router;

- 그 후에 component, 리덕스 module파일 같이 작업


<비동기통신 과정>

- json-server 설치 (+dB파일 생성) : yarn json-server --watch db.json --port 4000

- yarn add axios

-yarn add react-query (리액트 쿼리 쓸때만)