React๋ ์ฌ์ฉ์์ ์น ์ฌ์ดํธ๊ฐ ์ํธ์์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
ํ์ง๋ง ์ฒ์ JSX ๋ฌธ๋ฒ๊ณผ ์ํ ๊ด๋ฆฌ๋ฅผ ์ ํ๋ฉด HTML์ด๋ ์ผ๋ฐ JS์ ๋ค๋ฅด๊ฒ ๋์ํ๋ ๋ถ๋ถ์ด ์์ด ์์ฃผ ํท๊ฐ๋ฆฌ๊ณค ํ์ฃ .
์ด๋ฒ ๊ธ์์๋ React๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋ ๊ผญ ์ง๊ณ ๋์ด๊ฐ์ผ ํ ๋ฌธ๋ฒ ์์์ ์ํ ๊ด๋ฆฌ ๊ฐ๋ ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
class๊ฐ ์๋๋ผ className์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.<div className="box">Hello</div> // โ
HTML์์๋ class์ง๋ง, JSX๋ JavaScript ๋ฌธ๋ฒ ๊ธฐ๋ฐ์ด๋ผ ์์ฝ์ด์ธ class ๋์ className์ ์ฌ์ฉํฉ๋๋ค.
{}๋ก ๊ฐ์ธ์ ์ฌ์ฉํฉ๋๋ค.const name = "React";
<h1>{name}</h1> // โ
JSX ์์์ JavaScript ํํ์์ ์ฌ์ฉํ๋ ค๋ฉด ์ค๊ดํธ {}๋ก ๊ฐ์ธ์ผ ํฉ๋๋ค.
<div style={{ color: 'red', fontSize: '16px' }}></div> // โ
CSS ์์ฑ๋ช ์ camelCase๋ก ๋ฐ๊พธ๊ณ , ์ ์ฒด๋ฅผ ๊ฐ์ฒด๋ก ์์ฑํด์ผ ํฉ๋๋ค.
return() ์์๋ ํ๋์ ์ต์์ ๋ถ๋ชจ ์์๋ง ์์ด์ผ ํฉ๋๋ค.return (
<>
<Header />
<Main />
</>
) // โ
Fragment ์ฌ์ฉ
JSX๋ ํ๋์ ํ๊ทธ๋ก ๊ฐ์ธ์ผ ํฉ๋๋ค. ์ฌ๋ฌ ์์๋ฅผ ๋ณ๋ ฌ๋ก ์ฐ๋ ค๋ฉด <></> (Fragment)๋ฅผ ํ์ฉํ์ธ์.
useState)์์ ์์ฃผ ํ๋ ์ค์useState๋ ์ํ์ ์ํ ์
๋ฐ์ดํธ ํจ์๋ฅผ ๋ฐํํฉ๋๋ค.const [count, setCount] = useState(0);
์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋ฉ๋๋ค.
onClick์๋ ๋ฌด์กฐ๊ฑด ํจ์๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.<button onClick={() => setCount(count + 1)}>Click</button> // โ
๊ดํธ๋ฅผ ๋ฐ๋ก ์ฐ๋ฉด ํจ์๊ฐ ์ฆ์ ์คํ๋๋ฏ๋ก, ํ์ดํ ํจ์๋ ํจ์ ์ด๋ฆ๋ง ์ ๋ฌํด์ผ ํฉ๋๋ค.
like++ ์ฒ๋ผ ํ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ ์
๋ฐ์ดํธ๊ฐ ์๋๋๋ก ๋์ง ์์ ์ ์์ต๋๋ค.<span onClick={() => setLike(like + 1)}>๐</span> // โ
like++๋ ๊ธฐ์กด ๊ฐ์ ๋ฐํํ ๋ค ์ฆ๊ฐ์ํค๋ฏ๋ก, React์ ๋น๋๊ธฐ์ ์ํ ์ฒ๋ฆฌ์ ์ด๊ธ๋ ์ ์์ต๋๋ค.
โ
like++๋ ํ์ฌ ๊ฐ์ ๋จผ์ ์ ๋ฌํ๊ณ ๋์ค์ ์ฆ๊ฐ์ํค๊ธฐ ๋๋ฌธ์, ์๋ํ ์ฆ๊ฐ ํจ๊ณผ๊ฐ ์ ์ฉ๋์ง ์์ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:setLike(prev => prev + 1)๋๋setLike(like + 1)์ฌ์ฉ
setState์ ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ๋๊ฒจ์ผ React๊ฐ ๋ณ๊ฒฝ์ ๊ฐ์งํฉ๋๋ค.const newArr = [...oldArr]; // ๋ฐฐ์ด ๋ณต์ฌ
setData(newArr); // โ
React๊ฐ ๊ฐ์งํจ
| ํญ๋ชฉ | React | Vue |
|---|---|---|
| ์ํ ๋ณ๊ฒฝ ์์น | ๋ถ๋ณ์ฑ (immutability) | ๋ฐ์์ฑ ์์คํ (reactivity) |
| ์ํ ๋ณ๊ฒฝ ๋ฐฉ์ | ๋ณต์ฌ ํ ์๋ก์ด ๊ฐ์ผ๋ก ๋์ฒด | ์๋ณธ ๊ฐ์ฒด/๋ฐฐ์ด ์ง์ ์์ ๊ฐ๋ฅ |
| ๋ณ๊ฒฝ ๊ฐ์ง | ์ฐธ์กฐ๊ฐ ๋น๊ต (์์ ๋น๊ต) | Proxy ๊ธฐ๋ฐ ์ถ์ |
| ์ฝ๋ ์ ์ฐ์ฑ | ๋ฒ๊ฑฐ๋กญ์ง๋ง ๋ช ํ | ์ง๊ด์ ์ด์ง๋ง ๋ด๋ถ ์ถ์ ๋ก์ง ๋ณต์ก |
| ํญ๋ชฉ | ํต์ฌ ๋ด์ฉ |
|---|---|
| JSX class | className ์ฌ์ฉ |
| JSX ๋ณ์ ๋ฐ์ธ๋ฉ | {}๋ก ๊ฐ์ธ์ผ ํจ |
| style ์ ์ฉ | ๊ฐ์ฒด ํํ๋ก ์์ฑ |
| return ๋ฌธ | ํ๋์ ์ต์์ ํ๊ทธ๋ง ํ์ฉ |
| useState | ์ํ ๋ณ๊ฒฝ์ ์๋ก์ด ๊ฐ ํ์ |
| ์ํ ๋ณ๊ฒฝ | ์ง์ ์์ โ, ๋ณต์ฌ ํ setํจ์ ์ฌ์ฉ โ |
| ํ์ ์ฐ์ฐ | ++ ๋ณด๋ค๋ like + 1 ์ฌ์ฉ ๊ถ์ฅ |