React | React ์ฌ์ฉํ๊ธฐ
1. ๋ฆฌ์กํธ ์ฌ์ฉํ ํ๊ฒฝ ๋ง๋ค๊ธฐ
pwd
npx create-react-app ํ์ผ์ด๋ฆ
์๋์ฒ๋ผ ๋์ค๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์ค์น!
npx ๋ฅผ ํ์ฉํ๋ฉด ๋ด PC์ create-react-app ์ ๋ค์ด๋ฐ์ง ์๊ณ ๋ฐ๋ก ์คํ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ค.
create-react-app์ CRA๋ผ๊ณ ๋ ํ๋ค.
๐CRA๊ฐ ํ์ํ ์ด์ ?
CRA๋ ๋ฆฌ์ํธ๋ฅผ ์ด์ฉํด ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ํ์ํ ๋๊ตฌ๋ค์ ๋ชจ์ ํด์ฒด์ธ์ด๋ค.
๋ฆฌ์กํธ๋ UI๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ UI ์ธ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ํด ๋ค๋ฅธ ํจํค์ง๋ค์ด ํ์ํ๋ฐ,
ํ์ํ ํจํค์ง๋ฅผ ๋ค์ด๋ฐ๊ณ ํธํ์ฑ์ ๋ง์ถ๊ณ ํ๊ฒฝ ์ค์ ์ด ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์
ํ์ํ ๋๊ตฌ๋ค์ ๋ฏธ๋ฆฌ ์กฐํฉํด์ ์ค์ ํ ํด์ฒด์ธ์ ์ด์ฉํด ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๋ค.
2. ์คํ๋๋์ง ํ์ธํ๊ธฐ
ls
//์๋ก์ด ํด๋๊ฐ ์์ฑ๋ ๊ฑธ ๋ณผ ์ ์์
cd ํด๋์ด๋ฆ
//ํด๋๋ก ์ด๋ํ๊ธฐ
npm start
์๋์ ๋ณด์ด๋ ํ๋ฉด์ ์ ์์ ์ ์๋ํ๊ณ ์๋๊ฑฐ๋ค.
3. VS Code ์์ ํด๋๋ฅผ ์ด์ด๋ณด๊ธฐ
ํด๋๋ฅผ ์ด์ด๋ณด๋ฉด
ํฌ๊ฒ node_modules/ public / src ํด๋๊ฐ ์๋ค.
src ํด๋ ์์ App.js ๊ฐ ์์ ์ด๋ฏธ์ง์ฒ๋ผ ๋ฆฌ์ํธ ๋ก๊ณ ๊ฐ ๋์๊ฐ๊ณ ์๊ฒ ํ๋ ํ์ผ์ด๋ค.
App.js ํ์ผ์ฒ๋ผ ์ฌ์ฉํ๋ ค๋ฉด src ํด๋ ์์ javascript ํ์ผ์ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
4. react-router-dom ์ค์น
๋ฆฌ์กํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ค์นํด์ผ ํ๋ค.
CRA๋ฅผ ํตํด์ ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ SPA(Single Page Application)๋ก html ํ์ผ์ด ํ๋๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์
ํ๋์ Html์์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ค๋ฅธ UI๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ผ์ฐํ ๊ธฐ๋ฅ์ด ํ์ํ๋ค.
npm install react-router-dom
์์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ค์นํ๋ฉด package.json ํ์ผ์ ๋ค์ด๊ฐ์
์๋์ง ํ์ธํด์ค๋ค.
npm(node package manager)์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ๋ฌถ์์ผ๋ก
์ ๋ฐ์ดํธํ๊ณ ์ญ์ ํ ์ ์๊ฒ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ ์ก์คํ ์ด์ ๊ฐ์ ๊ฑฐ๋ค.
node_modules์ npm์ผ๋ก ์ค์นํ ํจํค์ง๋ค์ด ์ ์ฅ์ด ๋๋ค.
5. Router.js ํ์ผ ๋ง๋ค์ด ๊ฒฝ๋ก ์ค์
src ํด๋ ์์ Router.js ํ์ผ์ ๋ง๋ ๋ค.
Router.js ์ ๋ค์ด๊ฐ ์๋์ ๊ฐ์ด import ํด์ค๋ค .
1.๋ฆฌ์ํธ
2.๋ผ์ฐํ ์ ๊ตฌํํ๊ธฐ ์ํ BrowserRouter, Routes, Route
3.ํ๋ฉด์ ๋ณด์ฌ์ค ํ์ด์ง JavaScript ํ์ผ
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import MyComponent from './ํด๋น์ปดํฌ๋ํธํ์ผ๊ฒฝ๋ก'
Router์ด๋ฆ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด Route ์ path(๊ฒฝ๋ก)๋ฅผ ์ค์ ํ๊ณ element(์ด๋ค ์ปดํฌ๋ํธ ๋ณด์ฌ์ค์ง) ์ค์ ํ๋ค.
path์์ / ๋ง ์ฐ๋ฉด default ๊ฐ์ผ๋ก ์ง์ ๋๋ค.
๊ทธ ๋ค์ ๋ผ์ฐํฐ๋ฅผ export ํด์ค๋ค.
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import ์ปดํฌ๋ํธjsํ์ผ์ด๋ฆ from './์ปดํฌ๋ํธjsํ์ผ๊ฒฝ๋ก'
const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/์ปดํฌ๋ํธ๊ฒฝ๋ก์ด๋ฆ" element={<์ปดํฌ๋ํธjsํ์ผ์ด๋ฆ />} />
</Routes>
</BrowserRouter>
);
};
export default Router;
6. index.js ๋ ๋๋ง ์ค์ ํ๊ธฐ
Router ํ์ผ์ import ํ๊ณ root.render() ๋ก Router์ปดํฌ๋ํธ๋ก ๋ ๋๋ง๋๊ฒ ์์ ํ๋ค.
import React from 'react';
import ReactDOM from 'react-dom/client';
import Router from './Router';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Router />);
7. ๋ด๊ฐ ์ํ๋ ์ปดํฌ๋ํธํ์ผ ๋ง๋ค์ด ๋ณด๊ธฐ
src ํด๋ ์์ ํ์ผ์ด๋ฆ.js ๋ง๋ ๋ค์
ํจ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฃ๊ณ ๋ ๋๋ง์ ๊ฑธ์ด์ฃผ๋ฉด ๋ธ๋ผ์ฐ์ ํ๋ฉด์ด ๋ฐ๋์ง ์๋๋ค.
*์ฌ๊ธฐ์ ํ์ผ์ด๋ฆ.js ์ผ๋ก ํ์ง๋ง ํจ์์ด๋ฆ๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ปดํฌ๋ํธ๋ช ์ ์ง์ด์ค๋ค.
function MyComponent () {
return ๋ฆฌํด๊ฐ;
}
index.jsํ์ผ ์์์ ํ์ผ์ด๋ฆ.js๋ฅผ index.html ์ ์ฐ๊ฒฐํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ผ์ด๋ฆ.js ๋ฅผ ๋จผ์ index.js ํ์ผ์์ ๊ฐ์ ธ๋ค ์ธ ์ ์๋๋ก ๋จผ์ export ํด์ค์ผ ํ๋ค.
์๋์ฒ๋ผ ํ๋จ์ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ฉด index.js ์์ import ํด์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๊ฑฐ๋ค.
function MyComponent () {
return ๋ฆฌํด๊ฐ;
}
export default MyComponent;
index.js ํ์ผ๋ก ์ด๋ํ์ฌ ํ์ผ์ด๋ฆ.js ๋ฅผ import ํ๋ค.
์ฌ๊ธฐ์ .js ํ์ฅ์๋ฅผ ๋ถ์ด์ง ์์๋ ์๋ณ์ด ๊ฐ๋ฅํ๋ค.
import MyComponent from “./ํ์ผ์ด๋ฆ”;