๐Ÿšค React

Dayยท2022๋…„ 4์›” 12์ผ
0

๐Ÿ“‹ React

React ๋Š” ios android ์•ฑ๋„ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•œ react native๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ์žฅ์ 

์„ ์–ธ์  vs ์ ˆ์ฐจ์  ๊ฐœ๋ฐœ

์ ˆ์ฐจ๋ฅผ ๋ชจ๋‘ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.
์›ํ•˜๋Š” ๋ฐฉ ๋ชจ์Šต ์ƒ์ƒํ•ด์„œ ๊ทธ๋ฆฐ๋‹ค์Œ, ๋กœ๋ด‡(React)ํ•œํ…Œ ๊ทธ๋ฆผ ์ „๋‹ฌํ•˜๋ฉด ๋งŒ๋“ค์–ด์ค€๋‹ค.
๋ญ˜ ์›ํ•˜๋Š”์ง€๋งŒ ์•Œ๋ฉด React๊ฐ€ ํ•ด์ค€๋‹ค.

Virtual DOM

์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด์„œ ๋งํ•ด์ค€๋‹ค.

๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ๋Š”, DOM์„ ์ž์ฃผ ์กฐ์ž‘ํ•ด์•ผ ํ•˜๊ณ  ์ž์ฃผ ๋ฐ”๋€Œ์–ด์•ผ ๋˜๋Š”๋ฐ,
virtual DOM์—์„œ ์ด๋Ÿฐ ๊ณผ์ •๋“ค์ด ๋‹ค ์ผ์–ด๋‚˜๊ณ  ๋งํ•ด์ฃผ๋Š” ๊ฑฐ๋ผ์„œ, ํ•œ๋ฒˆ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ฒŒ ํ•ด์ค€๋‹ค. ํšจ์œจ์ ์ž„.

Node

๋ธŒ๋ผ์šฐ์ € ๋ฐ”๊นฅ์—์„œ๋„ javascript๋ฅผ ์‹คํ–‰์‹œ์ผœ ์ฃผ๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํƒˆ์›น์„ ์ด๋ค„๋‚ธ ๊ฒƒ.

์›น ์ƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด, ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ํ•„์š”ํ•˜๋‹ค.

NPM

Node package manager

๋…ธ๋“œ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋ฐ›๊ณ  ๊ด€๋ฆฌํ•˜๊ณ  ์‚ญ์ œํ•ด์ฃผ๋Š” ๋งค๋‹ˆ์ €.

CRA

Create-React-App

ํ•˜๋‚˜์˜ ๋ช…๋ น๋งŒ ์ž…๋ ฅํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ฆฌ์•กํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€๋Šฅ
npx creat-react-app ํ”„๋กœ์ ํŠธ ์ด๋ฆ„

git log์น˜๋ฉด, git init ํ•œ ์  ์—†๋Š”๋ฐ๋„
๋‚จ์•„์žˆ๋‹ค. CRA๊ฐ€ ํ•ด์ค€ ๊ฒƒ.

vscode ์— ํ”„๋กœ์ ํŠธ ํด๋” ์—ด๊ณ ,
vscode์•ˆ์˜ ํ„ฐ๋ฏธ๋„์— npm start ํ•˜๋ฉด CRA ์„ค์น˜

node-modules : cra์—์„œ ๋‹ค์šด๋ฐ›์€. ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค

package.json : ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋ฒ„์ „ ์ •๋ณด , ์‹คํ–‰๊ฐ€๋Šฅ ๋ช…๋ น์–ด ๋“ฑ์„ ์ ์–ด ๋†“์€ ๋ช…์„ธ์„œ

 	dependencies : ํŒจํ‚ค์ง€๋“ค์˜ ์ด๋ฆ„. ๋ฒ„์ „ ์ •๋ณด

.gitignore : git์ด๋ž‘ ์—ฐ๊ฒฐ ์•ˆํ•  ๊ฒƒ๋“ค

		node modules ๊ฐ™์€ ํŒŒ์ผ

๋ญ”๊ฐ€ ํŒŒ์ผ์ด ์‚ญ์ œ๋๊ฑฐ๋‚˜ ์—†์„ ๋•Œ,
npm start ํ•˜๋ฉด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์ด ์—†์–ด์„œ ์—๋Ÿฌ ๋œฌ๋‹ค.
์ด๋Ÿฐ ์ƒํ™ฉ์— package.json ์˜ dependencies ๋“ค์–ด๊ฐ€์„œ ์‚ดํŽด๋ณด๊ณ 
ํ•„์š”ํ•œ ๊ฒƒ๋“ค ํ™•์ธ ํ›„ ๋‹ค์šด๋ฐ›์•„์•ผ ํ•จ.
์ด๋Ÿฐ ์ƒํ™ฉ์— npm install ์น˜๋ฉด ํ•„์š”ํ•œ ๊ฒƒ๋“ค ์•Œ์•„์„œ ์„ค์น˜ ํ•ด์คŒ
๊ทธ๋‹ค์Œ npm start ํ•˜๋ฉด ์ •์ƒ ์‹คํ–‰

Component

์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ๊ฐ์˜ ๋…๋ฆฝ๋œ ๋ชจ๋“ˆ
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๊ตฌ์„ฑ ๋‹จ์œ„

ํด๋ž˜์Šคํ˜• functionํ˜• ๋‘๊ฐœ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ ๊ฑฐ์˜ ํ•จ์ˆ˜ํ˜•์„ ์“ด๋‹ค.

class ํ˜• ํ• ๋•Œ๋Š” extends์“ฐ๊ณ 
์œ„์—react์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ‘œ์‹œ๋„ ํ•ด์ค˜์•ผํ•จ

index. html index.js App.js

index.js

import React from "react";
๋งํฌ์—†์ด "react"๋˜์–ด์žˆ๋Š”๊ฑด node modules์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๋ง์ž„
. ํ˜„์žฌ ํด๋” ์œ„์น˜ ์˜๋ฏธ
๋ฆฌ์•กํŠธ React ๊ฐ์ฒด์— ์žˆ๋Š” render๋ผ๋Š” ๋ฉ”์†Œ๋“œ ์ ‘๊ทผํ•ด์„œ ํ˜ธ์ถœํ•œ๋‹ค.

render ์ธ์ž๋Š” 2๊ฐœ

  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค

  • document.get ~ ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

    ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ 2๋ฒˆ์งธ ์ธ์ž๋กœ ๊ฐ€์ ธ์˜จ ๊ทธ ์œ„์น˜์— ๋ณด์—ฌ์ค€๋‹ค. (๋ Œ๋”๋งํ•œ๋‹ค)

    ๊ทธ๋ž˜์„œ ๋นˆ div์—์„œ๋„ ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์ž„

App.js

์•ž๊ธ€์ž ๋Œ€๋ฌธ์ž.
๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ํ˜•ํƒœ๋Š” ํ•จ์ˆ˜๋ž‘ ๋น„์Šท
์ผ๋ฐ˜์  ํƒœ๊ทผ์ง€ ์ปดํฌ๋„ŒํŠผ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ฒซ๊ธ€์ž ๋Œ€๋ฌธ์ž์ธ๊ฐ€
ํŒŒ์ผ๋ช…๋„ ์ฒซ๋ฒˆ์งธ ๋Œ€๋ฌธ์ž

๋ฆฌํ„ด๋ฌธ์•ˆ์˜ jsx : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณด์—ฌ์ค„ ๋‚ด์šฉ

ํ๋ฆ„ ํŒŒ์•…

  • html์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์ดˆ๋กœ ๋ฐ›๋Š” ๊ฒƒ
  • index.js๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌ์•กํŠธ ์‹ค์งˆ์ ์ธ ๋‚ด์šฉ์„ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค.
  • ๊ฑฐ๊ธฐ Render ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” App์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ๋‚ด์šฉ์€ App.js ์— ์žˆ๋‹ค.

React Dom.render ํ†ตํ•ด์„œ ์‹ค์ œ ํ™”๋ฉด ๋ณด์—ฌ์ค„ ๊ฒƒ๋“ค ๊ฒฐ์ •์ง€์–ด์คŒ

export import ์„œ๋กœ ์ฃผ๊ณ ๋ฐ›์Œ
import ํ•˜๋ ค๋ฉด ๋‚ด๋ณด๋‚ด์ฃผ๋Š” ์ชฝ์—์„œ export ์ ์–ด์•ผํ•จ
index.jsํŒŒ์ผ์—์„œ import ์ ์Œ (App.js ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค๊ฐ€ ์จ์•ผํ•˜๋‹ˆ๊นŒ )
๋ฐ˜๋Œ€๋กœ App.js(ex)๋Š” export

css ํŒŒ์ผ ๋งŒ๋“œ๋ ค๋ฉด ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์ด๋ž‘ ๊ฐ™์•„์•ผํ•จ
์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ํŒŒ์ผ์„ ๋งŒ๋“œ๋‚˜๋ณด๋‹ค.
App.css
jsํŒŒ์ผ์ด๋ž‘ ๋‹ค๋ฅด๊ฒŒ ๊ทธ๋ƒฅ import "./App.css" ํ•˜๋ฉด ๋œ๋‹ค.
์ด ๊ฒฝ์šฐ์— index.js์—์„œ App.js ๋Œ์–ด ์“ธ๋•Œ๋Š” App.css๋„ ๊ฐ™์ด import ๋œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ

์‚ฌ์ง„์ฒ˜๋Ÿผ ๋กœ๊ทธ์ธ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์–ด์„œ ๊ฐ€์ ธ์™€๋ณด์ž. Login.

์ด๋Ÿฐ์‹์œผ๋กœ ์—ฐ๊ฒฐ.

JSX


DOM+EVENT ๋กœ ์ž‘๋™ ์‹œ์ผฐ๋˜ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘๋™ ๊ฐ€๋Šฅ

๋ชจ๋“  ํƒœ๊ทธ๋Š” ๋‹จ์ผ ๋ถ€๋ชจ ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ ธ์•ผํ•จ.

๊ทธ๋ž˜์„œ divํƒœ๊ทธ๋กœ ๋ณดํ†ต ๋ฌถ์Œ ๊ทผ๋ฐ ์ด๊ฑด ๊ท€์ฐฎ์œผ๋‹ˆ๊นŒ
<> </> ์ด๋ ‡๊ฒŒ ๋ฌถ์„ ์ˆ˜ ์žˆ์Œ

๋˜,๋ชจ๋“  ํƒœ๊ทธ๊ฐ€ ์…€ํ”„ ํด๋กœ์ง• ๊ฐ€๋Šฅ
๋ชจ๋“  ํด๋ž˜์Šค๋Š” ์นด๋ฉœ ์ผ€์ด์Šค
class๋ช…์€ className ์œผ๋กœ ์ณ์•ผ ํ•จ
ํƒœ๊ทธ์— ์†์„ฑ ์ค„๋•Œ ์†์„ฑ๊ฐ’์—๋Š” (์†์„ฑ ๋ง๊ณ ) ๋”ฐ์˜ดํ‘œ๋ฅผ ์ค˜์•ผ ํ•œ๋‹ค.("")

๐Ÿ“‹ HTML,CSS ํŒŒ์ผ ๋ฆฌ์•กํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

  • css ํŒŒ์ผ์€ ๊ทธ๋ƒฅ ๋‚ด์šฉ๋งŒ ์ ๋Š”๋‹ค.

  • ์ปดํฌ๋„ŒํŠธ jsํŒŒ์ผ (Login.js) ํŒŒ์ผ์€, ์ถœ์ฒ˜ ํ‘œ์‹œํ•˜๋Š”๋ฐ,
    ๊ธฐ๋ณธ์ ์œผ๋กœ ์žˆ๋Š” import react ๋ถ€ํ„ฐ, import cssํŒŒ์ผ์ฃผ์†Œ๊นŒ์ง€ ์ ์–ด๋†“์Œ.
    ๋งˆ์ง€๋ง‰์— export default Login

  • ํ•จ์ˆ˜ return ๋’ค์— html์˜ body ๋ถ€๋ถ„ ์นดํ”ผํ•ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

  • html ์ฝ”๋“œ์—์„œ ์•ž๋’ค๋กœ div ๋งŒ๋“ค์–ด์„œ ๋‹ซ๊ณ , input ๊ฐ™์€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ํƒœ๊ทธ๋“ค ๋‹ค ๋‹ซ์•„์ค€๋‹ค.

  • class ๋Š” className ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€