๐Ÿ”‘Code/React

React | React ์‚ฌ์šฉํ•˜๊ธฐ

pajiyeee 2023. 3. 26. 19:22

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 ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€์„œ

"react-router-dom": "^6.9.0",
 

์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ค€๋‹ค.

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 “./ํŒŒ์ผ์ด๋ฆ„”;