๐ง ๊ฐ์ DOM์ด๋?
- ์ค์ DOM์ ์ ๊ทผํ๋ ๋์ , ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๊ตฌ์ฑํด ์ถ์ํํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
- ๋ฆฌ์กํธ๊ฐ ๋ชจ๋ ์ฒ๋ฆฌ๋ฅผ ๋์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ DOM API ์กฐ์ ์์ ์ ์ง์ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค.
- ๋์ ๊ฐ์ DOM์ ๋ค๋ฃจ๊ฑฐ๋ ๋ฆฌ์กํธ๊ฐ UI๋ฅผ ์์ฑํ๊ณ ๋ธ๋ผ์ฐ์ ์ ์ํธ์์ฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ๋ช ๋ น๋ง ๋ค๋ฃจ๋ฉด ๋ฉ๋๋ค.
๐ง React Element (๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ)
- ๊ฐ์ DOM์ ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๋ํ ๋ธ๋ผ์ฐ์ DOM์ DOM ์๋ฆฌ๋จผํธ๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค.
- ์ด ๋, ๋ฆฌ์กํธ ์จ๋ฆฌ๋จผํธ๋ ๊ทธ์ ๋์ํ๋ ์ค์ DOM ์๋ฆฌ๋จผํธ๊ฐ ์ด๋ป๊ฒ ์๊ฒจ์ผํ๋์ง ๊ธฐ์ ํด์ค๋๋ค. (๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ -> DOM ์๋ฆฌ๋จผํธ)
๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ ( React.createElement๋ฅผ ์ฌ์ฉํด ์์ฑ )
React.createElement("h1", null, "์ ์ ํ ์ฌ๊ณผ")
React.createElement
- 1๋ฒ์งธ ์ธ์ : ๋ง๋ค๋ ค๋ ์๋ฆฌ๋จผํธ์ ํ์ ์ ์
- 2๋ฒ์งธ ์ธ์ : ์๋ฆฌ๋จผํธ์ ํ๋กํผํฐ
- 3๋ฒ์งธ ์ธ์ : ์๋ฆฌ๋จผํธ์ ์์ ๋ ธ๋
DOM ์๋ฆฌ๋จผํธ
<h1>Fresh Apple</h1>
๋์ ๊ฐ๋ค. ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ ๋จ์ง ๋ฆฌ์กํธ๊ฐ DOM ์๋ฆฌ๋จผํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฆฌํฐ๋ด
๐ง React DOM
- React DOM์ด๋ Virtual DOM์์ HTML์ ์์ฑํ๋ ๋ฐ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- React DOM์๋ ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋๊ตฌ๊ฐ ๋ค์ด ์์ต๋๋ค.
- render ๋ฉ์๋์ ์๋ฒ์์ ์ฌ์ฉํ๊ธฐ ์ํ renderToString๊ณผ renderToStaticMarkup ๋ฉ์๋๊ฐ ์์ต๋๋ค.
(์์)
var fruit = React.createElement("h1", null, "์ ์ ํ ์ฌ๊ณผ")
ReactDOM.render(fruit, document.getElementById('react-container'))
ReactDOM.render
- 1๋ฒ์งธ ์ธ์ : ๋ ๋๋งํ ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ
- 2๋ฒ์งธ ์ธ์ : ๋ ๋๋ง์ด ์ผ์ด๋ ๋์ DOM ๋ ธ๋
์๋์ ๊ฐ์ด HTML์ ์ ์ํด๋ react-container๋ผ๋ id๋ฅผ ๊ฐ์ง div์ ์์์ผ๋ก h1 ์๋ฆฌ๋จผํธ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
<div id="react-container">
<h1>์ ์ ํ ์ฌ๊ณผ</h1>
</div>
ReactDOM์์ props.children์ ์ฌ์ฉํด ์์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ ๋๋ง ํ ์ ์์ต๋๋ค. -> ์ปดํฌ๋ํธ ํธ๋ฆฌ
(์์)
React.createElement(
"ul",
null,
React.createElement("li", null, "์ฌ๊ณผ 1๊ฐ"),
React.createElement("li", null, "ํฌ๋ 2๊ฐ"),
React.createElement("li", null, "๋ฉ๋ก 5๊ฐ"),
)
4๋ฒ์งธ ์ดํ์ ์ถ๊ฐ๋ ์ธ์๋ ๋ค๋ฅธ ์์ ์๋ฆฌ๋จผํธ๋ก ์ทจ๊ธ๋ฉ๋๋ค.
<ul>
<li>์ฌ๊ณผ 1๊ฐ</li>
<li>ํฌ๋ 2๊ฐ</li>
<li>๋ฉ๋ก 5๊ฐ</li>
</ul>
์๋์ ๊ฐ์ด UI์๋ฆฌ๋จผํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌ ํ ์ ์์ต๋๋ค. -> ๋ฆฌ์กํธ์ ๊ฐ์ฅ ํฐ ์ฅ์
let items = {
"์ฌ๊ณผ 1๊ฐ",
"ํฌ๋ 2๊ฐ",
"๋ฉ๋ก 5๊ฐ"
}
React.createElement("ul", {className : "ingredients"},
items.map((ingredient, i) =>
React.createElement("li", {key:i}, ingredient))
)
๋ฐ์ํ
'Front-end > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] JSX ๋? (0) | 2020.07.09 |
---|---|
[React] ๋ฆฌ์กํธ ์ปดํฌ๋ํธ (ํด๋์ค ์ปดํฌ๋ํธ์ ํจ์ํ ์ปดํฌ๋ํธ) (0) | 2020.07.06 |
[React] ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ? (0) | 2020.07.06 |
[React] ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ฐ๋ - ๋ฐ์ดํฐ ๋ณํ (0) | 2020.07.05 |
[React] ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ฐ๋ - ๋ถ๋ณ์ฑ (0) | 2020.07.05 |