์๋ก ๐ง
์ค๋์ React๋ ๋ฌด์์ธ์ง, ์ ์์ ํน์ง์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค.
์น ํ์ด์ง๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ์ด์ฉํ์๋๋ฐ, ์ ํํ๊ฒ ๋ฌด์์ธ์ง, ํน์ง๊ณผ ์ฅ์ ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํด์๋ ๊ฒ ๊ฐ์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
React๋?
React๋ ์น ํ๋ ์์ํฌ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋๋ก์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์ถ์ฒ : ์ํค๋ฐฑ๊ณผ
React
๋ facebook์์ ์ ๊ณตํด์ฃผ๋ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.- ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ ์ ํ ๋๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ฆ, ํ์ฌ ๋ง์ด ํ์ฉ๋๊ณ ์๋, ์น/์ฑ์ View๋ฅผ ๊ฐ๋ฐํ ์ ์๋๋ก ํ๋ ์ธ๊ธฐ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
React์ ํ์์ฑ?
react๋ฅผ ์ฌ์ฉํ์ง ์์๋, html๊ณผ css, javascript๋ฅผ ์ด์ฉํด์ ์น ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์์ง๋ง, react๋ฅผ ์ด์ฉํด ์ฌ์ฉ์์ ์ํธ์์ฉํ ์ ์๋ ๋์ ์ธ UI๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ด์ฉ๋๋ ๊ฒ ๊ฐ์ต๋๋ค..!
React์ ํน์ง
React์ ํน์ง์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ถํด๋ณด์์ต๋๋ค.
- Data Flow
- Component ๊ธฐ๋ฐ ๊ตฌ์กฐ
- Virtual Dom
- Props and State
- JSX
1. Data Flow
React๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ํ ๋ฐฉํฅ์ผ๋ก๋ง ํ๋ฅด๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง๋๋ค.
Augular.js์ ๊ฐ์ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก(๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ) ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ถ์ ํ๊ธฐ๊ฐ ํ๋ค๊ณ ๋ณต์กํด์ง๋ ๊ฒฝํฅ์ด ์์ด, ๋ณต์กํ ์ฑ์์๋ ๋ฐ์ดํฐ ํ๋ฆ์์ ์ผ์ด๋๋ ๋ณํ๋ฅผ ๋ณด๋ค ์์ธก ๊ฐ๋ฅํ ์ ์๋๋ก ๋จ๋ฐฉํฅ ํ๋ฆ์ ๊ฐ์ง๋๋ก ํ๋ค๊ณ ํฉ๋๋ค.
2. Component ๊ธฐ๋ฐ ๊ตฌ์กฐ
Component๋ ๋ ๋ฆฝ์ ์ธ ๋จ์์ ์ํํธ์จ์ด ๋ชจ๋์ ๋งํฉ๋๋ค.
์ฆ, ์ํํธ์จ์ด๋ฅผ ๋ ๋ฆฝ์ ์ธ ํ๋์ ๋ถํ์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
React๋ UI(View)๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ(component)๋ฅผ ์ชผ๊ฐ์ ๋ง๋ญ๋๋ค.
ํ ํ์ด์ง ๋ด์์๋ ์ฌ๋ฌ ๊ฐ ๋ถ๋ถ์ ๋
๋ฆฝ๋ ์ปดํฌ๋ํธ๋ก ๋ง๋ค๊ณ , ์ด ์ปดํฌ๋ํธ๋ฅผ ์กฐ๋ฆฝํด ํ๋ฉด์ ๊ตฌ์ฑํฉ๋๋ค.
์ปดํฌ๋ํธ ๋จ์๋ก ์ชผ๊ฐ์ ธ ์๊ธฐ ๋๋ฌธ์, ์ ์ฒด ์ฝ๋๋ฅผ ํ์ ํ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์ฝ์ต๋๋ค. ์ด๋ ๊ฒ ๊ธฐ๋ฅ ๋จ์, UI ๋จ์๋ก ์บก์ํ์์ผ ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ต๋๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ ๋ฐ๋ณตํด ์ ๋ ฅํ ํ์ ์์ด, ์ปดํฌ๋ํธ๋ง importํด ์ฌ์ฉํ๋ฉด ๋๋ค๋ ๊ฐํธํจ์ด ์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์กํด์ง๋๋ผ๋ ์ฝ๋์ ์ ์ง๋ณด์, ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ง๋ ์ฅ์ ์ ๊ฐ์ง๋๋ค.
class App extends Component {
render() {
return (
<Layout>
<Header />
<Navigation />
<Content>
<Sidebar></Sidebar>
<Router />
</Content>
<Footer></Footer>
</Layout>
);
}
}
์์ ๊ฐ์ด Header, Footer๊ฐ์ ๊ตฌ์กฐ๋ฑ์ ์ปดํฌ๋ํธ๋ก ๋ง๋ค๊ณ , ์ด๋ฅผ ์กฐํฉํด์ root component๋ฅผ ๋ง๋๋ ๋ฐฉ์์ ๋๋ค.
3. Virtual DOM
๋จผ์ , DOM์ Document Object Model์ ์ฝ์์
๋๋ค.
DOM์ html, xml, CSS ๋ฑ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ธ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๊ฐ์ฃผํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
React๋ ์ด DOM Tree ๊ตฌ์กฐ์ ๊ฐ์ ๊ตฌ์กฐ์ฒด๋ฅผ Virtual DOM์ผ๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค.
Virtual DOM์ ๊ฐ์์ Document Object Model์ ๋งํฉ๋๋ค
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค Virtual DOM์ ๋ง๋ค๊ณ , ๋ค์ ๊ทธ๋ฆด ๋๋ง๋ค ์ค์ DOM๊ณผ ๋น๊ตํ๊ณ ์ ํ ์ํ๋ฅผ ๋น๊ตํด, ๋ณ๊ฒฝ์ด ํ์ํ ์ต์ํ์ ๋ณ๊ฒฝ์ฌํญ๋ง ์ค์ DOM์ ๋ฐ์ํด, ์ฑ์ ํจ์จ์ฑ๊ณผ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค๊ณ ํฉ๋๋ค.
4. Props and State
- Props
Props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํด ์ฃผ๋ ๋ฐ์ดํฐ๋ฅผ ๋งํฉ๋๋ค.
์ฝ๊ฒ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค! ์์ ์ปดํฌ๋ํธ์์ ์ ๋ฌ๋ฐ์ props๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๊ณ props๋ฅผ ์ ๋ฌํด์ค ์ต์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ง props๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. - State
State๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ ์ธํ๋ฉฐ ๋ด๋ถ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. state๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ฉฐ, ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํฉ๋๋ค. ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์๊ณ , ๊ฐ๊ฐ์ state๋ ๋ ๋ฆฝ์ ์ ๋๋ค.
5. JSX
React์์ JSX ์ฌ์ฉ์ด ํ์๋ ์๋์ง๋ง, React์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๊ณต์๋ฌธ์์ ์ค๋ช ์ ์ฒจ๋ถํด ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค!
const element = <h1>Hello, world!</h1>;
์์ ๊ฐ์ ๋ณ์ ์ ์ธ๋ JSX๋ฌธ๋ฒ์ ๋๋ค!
JSX๋ ?
Javascript๋ฅผ ํ์ฅํ ๋ฌธ๋ฒ์ ๋๋ค.React์์๋ ์ด๋ฒคํธ๊ฐ ์ฒ๋ฆฌ๋๋ ๋ฐฉ์, ์๊ฐ์ ๋ฐ๋ผ state๊ฐ ๋ณํ๋ ๋ฐฉ์, ํ๋ฉด์ ํ์ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ ๋ฐฉ์ ๋ฑ ๋ ๋๋ง ๋ก์ง์ด ๋ณธ์ง์ ์ผ๋ก ๋ค๋ฅธ UI ๋ก์ง๊ณผ ์ฐ๊ฒฐ๋๋ค๋ ์ฌ์ค์ ๋ฐ์๋ค์ ๋๋ค.
React๋ ๋ณ๋์ ํ์ผ์ ๋งํฌ์ ๊ณผ ๋ก์ง์ ๋ฃ์ด ๊ธฐ์ ์ ์ธ์์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ๋์ , ๋ ๋ค ํฌํจํ๋ “์ปดํฌ๋ํธ”๋ผ๊ณ ๋ถ๋ฅด๋ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋ ์ ๋์ผ๋ก ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. ์ดํ ์น์ ์์ ๋ค์ ์ปดํฌ๋ํธ๋ก ๋์์ค๊ฒ ์ง๋ง, JS์ ๋งํฌ์ ์ ๋ฃ๋ ๊ฒ ์ต์ํด์ง์ง ์๋๋ค๋ฉด ์ด ์ด์ผ๊ธฐ๊ฐ ํ์ ์ ์ค ๊ฒ์ ๋๋ค.
React๋ JSX ์ฌ์ฉ์ด ํ์๊ฐ ์๋์ง๋ง, ๋๋ถ๋ถ์ ์ฌ๋์ JavaScript ์ฝ๋ ์์์ UI ๊ด๋ จ ์์ ์ ํ ๋ ์๊ฐ์ ์ผ๋ก ๋ ๋์์ด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ React๊ฐ ๋์ฑ ๋์์ด ๋๋ ์๋ฌ ๋ฐ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์๊ฒ ํด์ค๋๋ค.
React ๊ณต์๋ฌธ์
๋ง์น๋ฉฐ๐ง
์ฌ์ค ์ ๋ ๊ทธ๋์ react๋ฅผ ์ด์ฉํด ์น ๊ฐ๋ฐ์ ์กฐ๊ธ์ ํด๋ณด์๋๋ฐ, ์ด๋ฌํ ํน์ง๋ค์ ์ ์๊ณ ์ด์ฉํ์ง๋ ๋ชปํ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค.. ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด๋ณด๊ณ ๊ณต๋ถํ๋ ์๊ฐ์ ๊ฐ์ง ์ ์์๊ณ , ์์ผ๋ก๋ ์ข ๋ ๊ฐ๋ ์ ์ด์ฉํ๊ณ , ์ฌ์ฉํ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค๐
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] footer ํ๋จ ๊ณ ์ (0) | 2022.08.07 |
---|
๋๊ธ