๐ถ What's React?
-
React๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค (UI)๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
-
์ฆ, ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์์ ์ฌ์ฉ์๊ฐ ํด๋ฆญ์ ํ๋ ๋ฑ์ ๋ค์ํ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ๊ทธ ์ด๋ฒคํธ์ ๋ง๊ฒ ๋ฐ์ํ๋๋ก ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ !
- ์น UI๋ฅผ ๋ง๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ปดํฌ๋ํธ ๋จ์๋ก ์ด๋ฃจ์ด์ง UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฃผ์ ํน์ง 3๊ฐ์ง
๐ด 1. JSX
- JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์์ HTML์ฒ๋ผ ์ธ ์ ์๋๋ก ๋์์ฃผ๋ ๋ฌธ๋ฒ, JavaScript๋ฅผ ํ์ฅํ ๋ฌธ๋ฒ
- ์ ์ฌ JavaScript์ผ ๋ฟ, JavaScript๊ฐ ์๋๋ค !!
JSX ์์ :
import React from 'react';
function App() {
return <h1 className="greeting">Hello!</h1>;
}
export default App;
๐ฅ JSX ๋ฌธ๋ฒ ์์น
- ๊ฐ์ธ์ธ ์์
- ์ปดํฌ๋ํธ์ ์ฌ๋ฌ ์์๊ฐ ์๋ค๋ฉด, ๋ถ๋ชจ ์์ ํ๋๋ก ๊ผญ ๊ฐ์ธ์ผ ํ๋ค.
import React from 'react';
function App() {
return (
<> {}
<h1>Hello, React!</h1>
<p>React is...</p>
</>
);
}
<></> : fragment tag
- class ๋์ className
- JSX์์๋ class ๋์ className์ผ๋ก ์์ฑ
function App() {
const text = 'React is...';
return (
<>
<h1 className="title">Hello, React!</h1>
<p>{text}</p>
</>
);
}
- ๊ผญ ํ๊ทธ๋ฅผ ๋ซ์์ผ ํจ!
- HTML์์
input, br
ํ๊ทธ๋ ๋ซ์ง ์์๋ ๋์ง๋ง, JSX์์๋ ๋ซ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฐ์!
<input type='text' name='name' />
<br />
{ /**/ }
๋ก ์ฃผ์ ์ฌ์ฉ
{ }
๐ 2. Components
- ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ์ปดํฌ๋ํธ๋ ?
- ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ํํ๋ UI์ ๋จ์, ๊ธฐ๋ฅ์ ์ต์ ๋จ์
- ์ปดํฌ๋ํธ๋ ์๋ก ๋
๋ฆฝ์ ์ด๊ณ ์ ๊ณ ๋ฆฝ๋์ด ์์ผ๋ฉฐ, ์ฌ๋ฌ ๋ถ๋ถ์ ๋ถํ ํด์ ์ฌ์ฉํ๋ฏ๋ก ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ
๐ก 3. Virtual DOM
- DOM?
- Document Object Model, ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ
- HTML ๋จ์ ํ๋ํ๋๋ฅผ ๊ฐ์ฒด๋ก ์๊ฐํ ๋ชจ๋ธ
- DOM์ ๊ตฌ์กฐ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค.
- ๋ง์ฝ ์ด๋ค DOM์ ์์๋ฅผ ํ๋ ์์ ํ๋ ํจ์๋ฅผ ๋ง๋ค๊ณ ์คํ์ํฌ ๋, ๋ชจ๋ ๊ฒ ๋ค์ ์คํ
- ์ฆ, ์์ ํ ๋๋ง๋ค ๋ถํ์ํ ์ฐ์ฐ์ด ๋งค๋ฒ ์ผ์ด๋๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๊ฐ์ DOM์ด ๋ฑ์ฅ
- ๊ฐ์ DOM์ ์ค์ DOM์ ์ฌ๋ณธ์ด๋ผ๊ณ ์๊ฐํ ์ ์์
- ๊ฐ์ DOM์ ๋ณํ๋ฅผ ๊ฐ์ DOM์์ ๋ฏธ๋ฆฌ ์ธ์งํด ๋ณํ์ํจ๋ค.
- ์ค์ DOM์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ ๋๋ง๋ ๋์ง ์๊ณ ์ฐ์ฐ ๋น์ฉ์ด ๋น๊ต์ ์ ๋ค. ๋ง์ง๋ง์ ์ค์ DOM์๊ฒ ๋์ ธ์ฃผ์ด, ๋ชจ๋ ๋ณํ๋ฅผ ํ๋ฒ์ ๋ ๋๋งํ๋ค.
- ๊ฐ์ DOM์ ๋ฐ๋์ง ์์ ๋ถ๋ถ๊ณผ ๋ฐ๋ ๋ถ๋ถ์ ์๋์ผ๋ก ๊ฐ์งํด์ ์
๋ฐ์ดํธ ์ํจ๋ค!
WHY React?
- ์์ฐ์ฑ/์ฌ์ฌ์ฉ์ฑ
- Component์ Hook ํ์ฉ
- ํ๋ถํ ์๋ฃ/๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ ์ธ๊ณ์ ์ผ๋ก ๊ฐ์ฅ ํ๋ฐํ๊ฒ ์ปค๋ฎค๋ํฐ ํ๋์ด ์ด๋ค์ง๊ณ ์๋ค.
- ๋ค์ํ ์ฌ์ฉ์ฒ
- ์น ์ดํ๋ฆฌ์ผ์ด์
๋ฟ๋ง ์๋๋ผ React-Native์ ์ ์ฉํ์ฌ ์๋๋ก์ด๋, IOS ์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๊ฐ๋ฅ
References
berkbach.com : ๊ธฐ์ด๋ถํฐ ๋ฐฐ์ฐ๋ React โ Part 1