
๐ ํจํธ์ค์บ ํผ์ค ๋ฐ๋ธ์บ ํ ํ๋ก ํธ์๋ 8์ฃผ์ฐจ ํ์ต ๋ด์ฉ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
๐ ์๋ชป๋ ์ ๋ณด๋ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
html, css, javascript ์์ ์ด ๋๋๊ณ ๋๋์ด ๊น๋ฏผํ ๊ฐ์ฌ๋์ ๋ฆฌ์กํธ ์์ ์ด ์์๋์์ต๋๋ค!
๋ณธ๊ฒฉ์ ์ธ ์์ ์ด ์์๋๊ธฐ ์ ํ์ตํ๋ ๋ด์ฉ์ ๊ฑฐ์ ๋๋ถ๋ถ์ด ๋ฆฌ์กํธ์๋ง ์ํ๋ ๊ฒ์ด ์๋, ๋ค๋ฅธ ์ด๋ค ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ณตํต์ ์ธ ๋ถ๋ถ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ํ์๋ผ๋ ์กฐ์ธ์ ํด์ฃผ์ จ์ต๋๋ค.
๐ "JavaScript๋ก DOM์ ๋ค๋ฃจ๋ฉฐ UI๋ฅผ ์์ ํ๋ ๊ฒ์ ํ๋ค์์ด์.."
ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ ํ์ ๋, DOM์ ์ ๋ฐ์ดํธ ํด์ผํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๊ณ , ๊ฐ ๋ฐฉ์์ ์ฅ์ ๊ณผ ๋จ์ ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
createElement
- ์ฅ์ : ํน์ DOM ์์๋ฅผ ์ ํํด ์์ ํ ์ ์์ด ํ์ํ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
- ๋จ์ : ๋ค์ํ ์์ฑ์ ์ถ๊ฐํ๊ฒ ๋๋ฉด์ ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ ์๋ค.
innerHTML
- ์ฅ์ : HTML ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ DOM์ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ ์ ์๋ค.
- ๋จ์ : ํน์ DOM ์์๋ฅผ ์ ํํ๊ณ ์์ ํ๊ธฐ ์ด๋ ค์, ๋ถํ์ํ ๋ ๋๋ง์ด ๋ฐ์ํ ์ ์๋ค.
์ด๋ ๋๊ฐ์ง ๋ฐฉ์ ๋ชจ๋ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ผ ๋๋ ๋ค๋ฃจ๊ธฐ ํ๋ค ์ ์๋ค๋ ๋จ์ ์ด ์๊ณ ์ด๋ฌํ ๋ถํธํจ์ ๊ฐ์ ํ๊ณ ์ ๋ค์ ๋๊ฐ์ง ๊ฐ๋ ์ด ๋ฑ์ฅํ์ต๋๋ค.
step1. DOM ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ๊ด๋ฆฌํ์๋ ๊ฐ๋ ์ด ๋ฑ์ฅ โ Virtual DOM
step2. ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ ๋, ์๋ก์ด ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ง๋ค๊ณ ๊ธฐ์กด๊ณผ ๋น๊ต ํ ์ฐจ์ด์ ๋ง Real DOM์ ์ ๋ฐ์ดํธํ๋ค. โ (CRUD์์ Create๋ง ์ ๊ฒฝ์ฐ์)

JSX๋ ๊ธฐ์กด์ HTML ๋งํฌ์ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
๋ฌธ๋ฒ์ HTML๊ณผ ๊ฑฐ์ ๋์ผํ์ง๋ง ํญ์ ํจ์๋ก ๊ฐ์ธ์ค์ผํ๊ณ , JSX ๋งํฌ์
์ return ํ๋๋ก ๋ง๋ค์ด์ผํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
- ํ๋ฐฉํฅ์ผ๋ก ํ๋ฌ๊ฐ๋ค๋ ๊ฐ๋ ์ ์ด์ฉ
- ์ฝ๋ฐฑ ํจ์๊ฐ ๋๋์ผ ๋ด ์์ ์
returnํ ์ ์๋ค
(โ ์ฝ๋ฐฑ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ํจ๊ป ๋ฌถ์ด์ ๋ด๊ฐ ์ต์ข ์ ์ผ๋กreturnํ๋ค!)
๋ฆฌ์กํธ๋ ํจ์๋ฅผ ํ๋์ UI ๋จ์๋ก ์๊ฐํฉ๋๋ค. ์ฌ๊ธฐ์ ๋น์ฐํ ํ๋์ ํจ์๊ฐ ์ด๋ค UI๋ค์ ์ปค๋ฒํ๋ ์ง๋ ๊ฐ๋ฐ์์ ๋ชซ์ด ๋ฉ๋๋ค. (ํจ์ ํ๋์ ์ผ๋ง๋ ๋ง์ UI๋ฅผ ๊ตฌ์ฑํ๋๋๋ ๊ฐ๋ฐ์์ ์ ํ์ฌํญ)
์๋ฅผ ๋ค์ด
๋๋ Page ๋จ์๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ ๊ฑฐ์ผvs๋๋ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ์์๋ค์ ๊ฐ๊ฐ ์ปดํฌ๋ํธ๋ก ๊ด๋ฆฌํ ๊ฑฐ์ผ(Title, Form, Item...)์ฒ๋ผ ๊ฐ๋ฐ์์ ์ ํ์ ๋ฐ๋ผ UI ์กฐ๊ฐ์ ๊ตฌ์ฑ์ ๋ฌ๋ผ์ง ์ ์๋ค๋ ๋ง!
๋ค๋ง, ํจ์๋ฅผ ํธ์ถ ๊ตฌ๋ฌธ์ผ๋ก ์ฌ์ฉํ๊ฒ๋๋ฉด UI์ ๋ชจ์(๊ตฌ์ฑ)์ด ์ ์๋ณด์ผ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด์ JSX๋ฅผ ๋ฆฌํดํ๋ ํจ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์ ํธ์ถ๋ฐฉ๋ฒ์ด์๋๋ผ, HTML ํ์์ผ๋ก ํ๊น ํ ์ ์๋ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ ํจ์๋ช ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ, JSX UI ์ ๋ณด๋ฅผ ๋ฆฌํดํ๋ ํจ์๋ฅผ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
function MyButton() {
return (
<button>๋ฒํผ</button>
)
}
// MyButton ์ปดํฌ๋ํธ ์ฌ์ฉํ๊ธฐ
export default function MyApp() {
return (
<div>
<h1>์ด์์ค์ธ์</h1>
<MyButton />
MyButton() // ์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์๋ค!
</div>
)
}
์ถ๊ฐ๋ก class ์์ฑ ์ฌ์ฉ์์๋ className="" ํํ๋ก ์ฌ์ฉํด์ผํ๊ณ , ์ฑ๊ธํ๊ทธ ๋ํ <br /> ์ฒ๋ผ ์ข ๋ ์๊ฒฉํ ๋ฌธ๋ฒ์ ์ ์ฉ๋๋ค๋ ํน์ง์ด ์์ต๋๋ค!