React ๋ ios android ์ฑ๋ ๊ฐ๋ฐ ๊ฐ๋ฅํ react native๊ฐ ์๋ค๋ ๊ฒ๋ ์ฅ์
์ ์ฐจ๋ฅผ ๋ชจ๋ ์ธ ํ์๊ฐ ์๋ค.
์ํ๋ ๋ฐฉ ๋ชจ์ต ์์ํด์ ๊ทธ๋ฆฐ๋ค์, ๋ก๋ด(React)ํํ
๊ทธ๋ฆผ ์ ๋ฌํ๋ฉด ๋ง๋ค์ด์ค๋ค.
๋ญ ์ํ๋์ง๋ง ์๋ฉด React๊ฐ ํด์ค๋ค.
์ฐ๋ฆฌ๊ฐ ๊ตฌํํ ๋ ํ์ํ ๊ฒ๋ค์ ์ ๋ฆฌํด์ ๋งํด์ค๋ค.
๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค๊ฑฐ๋ ์์ ํ ๋๋, DOM์ ์์ฃผ ์กฐ์ํด์ผ ํ๊ณ ์์ฃผ ๋ฐ๋์ด์ผ ๋๋๋ฐ,
virtual DOM์์ ์ด๋ฐ ๊ณผ์ ๋ค์ด ๋ค ์ผ์ด๋๊ณ ๋งํด์ฃผ๋ ๊ฑฐ๋ผ์, ํ๋ฒ๋ง ์์ ํ๋ฉด ๋๊ฒ ํด์ค๋ค. ํจ์จ์ ์.
๋ธ๋ผ์ฐ์ ๋ฐ๊นฅ์์๋ javascript๋ฅผ ์คํ์์ผ ์ฃผ๋ ์คํ ํ๊ฒฝ
์๋ฐ์คํฌ๋ฆฝํธ์ ํ์น์ ์ด๋ค๋ธ ๊ฒ.
์น ์์ด ์๋๋ผ ๋ด ์ปดํจํฐ์์ ์์ ํ๋ ค๋ฉด, ์ด๋ฐ ๊ฒ๋ค์ด ํ์ํ๋ค.
Node package manager
๋ ธ๋๋ก ์คํํ ์ ์๋ ํ๋ํ๋์ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ฐ๊ณ ๊ด๋ฆฌํ๊ณ ์ญ์ ํด์ฃผ๋ ๋งค๋์ .
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 ํ๋ฉด ์ ์ ์คํ
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ๊ฐ์ ๋
๋ฆฝ๋ ๋ชจ๋
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ๊ตฌ์ฑ ๋จ์
ํด๋์คํ functionํ ๋๊ฐ๋ก ๋๋๋๋ฐ ๊ฑฐ์ ํจ์ํ์ ์ด๋ค.
class ํ ํ ๋๋ extends์ฐ๊ณ
์์react์์ ๊ฐ์ ธ์จ๋ค๊ณ ํ์๋ ํด์ค์ผํจ
index.js
import React from "react";
๋งํฌ์์ด "react"๋์ด์๋๊ฑด node modules์์ ๊ฐ์ ธ์จ๋ค๋ ๋ง์
. ํ์ฌ ํด๋ ์์น ์๋ฏธ
๋ฆฌ์กํธ React ๊ฐ์ฒด์ ์๋ render๋ผ๋ ๋ฉ์๋ ์ ๊ทผํด์ ํธ์ถํ๋ค.
render ์ธ์๋ 2๊ฐ
์ปดํฌ๋ํธ๋ฅผ ์๋ฏธํ๋ค
document.get ~ ์์ ๊ฐ์ ธ์จ๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ค์ด๊ฐ ์ปดํฌ๋ํธ๋ฅผ
2๋ฒ์งธ ์ธ์๋ก ๊ฐ์ ธ์จ ๊ทธ ์์น์ ๋ณด์ฌ์ค๋ค.
(๋ ๋๋งํ๋ค)
๊ทธ๋์ ๋น div์์๋ ๋ณด์ฌ์ง๋ ๊ฒ์
App.js
์๊ธ์ ๋๋ฌธ์.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ํํ๋ ํจ์๋ ๋น์ท
์ผ๋ฐ์ ํ๊ทผ์ง ์ปดํฌ๋ํผ์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ฒซ๊ธ์ ๋๋ฌธ์์ธ๊ฐ
ํ์ผ๋ช
๋ ์ฒซ๋ฒ์งธ ๋๋ฌธ์
๋ฆฌํด๋ฌธ์์ jsx : ์ปดํฌ๋ํธ๊ฐ ๋ณด์ฌ์ค ๋ด์ฉ
ํ๋ฆ ํ์
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.
์ด๋ฐ์์ผ๋ก ์ฐ๊ฒฐ.
DOM+EVENT ๋ก ์๋ ์์ผฐ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ๊ฒ ์๋ ๊ฐ๋ฅ
๋ชจ๋ ํ๊ทธ๋ ๋จ์ผ ๋ถ๋ชจ ํ๊ทธ๋ก ๊ฐ์ธ์ ธ์ผํจ.
๊ทธ๋์ divํ๊ทธ๋ก ๋ณดํต ๋ฌถ์ ๊ทผ๋ฐ ์ด๊ฑด ๊ท์ฐฎ์ผ๋๊น
<> </> ์ด๋ ๊ฒ ๋ฌถ์ ์ ์์
๋,๋ชจ๋ ํ๊ทธ๊ฐ ์
ํ ํด๋ก์ง ๊ฐ๋ฅ
๋ชจ๋ ํด๋์ค๋ ์นด๋ฉ ์ผ์ด์ค
class๋ช
์ className ์ผ๋ก ์ณ์ผ ํจ
ํ๊ทธ์ ์์ฑ ์ค๋ ์์ฑ๊ฐ์๋ (์์ฑ ๋ง๊ณ ) ๋ฐ์ดํ๋ฅผ ์ค์ผ ํ๋ค.("")
css ํ์ผ์ ๊ทธ๋ฅ ๋ด์ฉ๋ง ์ ๋๋ค.
์ปดํฌ๋ํธ jsํ์ผ (Login.js) ํ์ผ์, ์ถ์ฒ ํ์ํ๋๋ฐ,
๊ธฐ๋ณธ์ ์ผ๋ก ์๋ import react ๋ถํฐ, import cssํ์ผ์ฃผ์๊น์ง ์ ์ด๋์.
๋ง์ง๋ง์ export default Login
ํจ์ return ๋ค์ html์ body ๋ถ๋ถ ์นดํผํด์ ๊ฐ์ ธ์จ๋ค.
html ์ฝ๋์์ ์๋ค๋ก div ๋ง๋ค์ด์ ๋ซ๊ณ , input ๊ฐ์ ํ๋๋ง ์๋ ํ๊ทธ๋ค ๋ค ๋ซ์์ค๋ค.
class ๋ className ์ผ๋ก ๋ฐ๊พผ๋ค.