๐ React ์ ๋ฌธ โ ฃ - Element
๐ React ์
๋ฌธ โ
ฃ - Element
๐
ใ์ํ์ ์ฒ์ ๋ง๋ ๋ฆฌ์กํธใ
๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
Element
๋?
Chrome
๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํตํด ํ์ธํ ์ ์๋Elements
๋DOM Element
๋ฅผ ์๋ฏธํ๋ค.DOM Element
๋ ๋ธ๋ผ์ฐ์ ์์ ์ค์ ๋ก ๋ ๋๋ง ๋HTML
์์์ด๋ค.ยReact Element
๋ ํ๋ฉด์ ๋ํ๋๋ ๋ด์ฉ์ ๊ธฐ์ ํJavascript
๊ฐ์ฒด๋ฅผ ์ผ์ปซ๋๋ค.- ์ฆ
DOM
์ ์ง์ ํ์๋์ง ์๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* JSON ํํ
{
ย ย type: 'button',
ย ย props: {
ย ย ย ย className: 'bg-green',
ย ย ย ย children: {
ย ย ย ย ย ย type: 'b',
ย ย ย ย ย ย props: {
ย ย ย ย ย ย ย ย children: 'ํ
์คํธ์ฉ ํ
์คํธ ์
๋๋ค!'
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
}
*/
// ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ๋ JSX ๋ฌธ๋ฒ
<button className="bg-green">
ย ย <b>
ย ย ย ย ํ
์คํธ์ฉ ํ
์คํธ ์
๋๋ค!
ย ย </b>
</button>
JSON
ํํ๋ก ์ฃผ์ ์ฒ๋ฆฌ๋ ๋ถ๋ถ์ดReact Element
์ด๋ค.- ๋ง๋ค์ด์ง
React Element
๋DOM
์ ํ์๋์ง ์์ ์ํ์ด๋ค. JSX
๋ฌธ๋ฒ๋React Element
๋ฅผ ๋ง๋ค์ด ๋ธ๋ค.Element
์type
์๋HTML
ํ๊ทธ๋ช ์ด ๋ฌธ์์ด๋ก ๋ค์ด๊ฐ ์ ์์ง๋งReact
์Component
๊ฐ ๋ค์ด๊ฐ ์๋ ์๋ค.- ํ๋์
Component
๋ ์ฌ๋ฌ ๊ฐ์ ์์Component
๋ฅผ ํฌํจํ ์ ์๋๋ฐ, ์์Component
๋ฅผ ์ญ ๋ถํดํ๋ค ๋ณด๋ฉด ๊ฒฐ๊ตญHTML
ํ๊ทธ๊ฐ ๋์ฌ ๊ฒ์ด๋ค. Element
์props
๋ ๋ถ๋ชจComponent
์์ ์์Component
๋ก ์ ๋ฌ๋๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.Element
๋ ๋ถ๋ณ์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ์์ฑ๋Element
๋ ๋ณํ์ง ์๋๋ค.
Element
๋ ๋๋ง
- ๋ฐ์ดํฐ๊ฐ ๊ฐฑ์ ๋๋ ์์ ์
Virtual DOM
์ ์ ์ฒดUI
๋ฅผ ๋ ๋๋ง ํ๋ค. - ์ด๋ ๊ฐ์ ธ์จ ํธ๋ฆฌ์ ๋ณต์ฌ๋ณธ๊ณผ ๊ธฐ์กด ํธ๋ฆฌ๋ฅผ ๋น๊ตํ์ฌ ๋ฐ๋ ๋ถ๋ถ๋ง ์ค์ UI์ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
- ์ ํํ๋ ๋ฐ๋ ๋
ธ๋์ ์์ ๋
ธ๋๊น์ง
UI
์ ๋ฐ์๋๋ค. - ๋ถ๋ณ์ฑ์ ๊ฐ๊ณ ์๋ค๋ ๊ฒ์
Element
๋ฅผ ์์ ํ๋ ๊ฒ ์๋๋ผ ๊ต์ฒดํด ๋ฒ๋ฆฐ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. - ํ๋ฉด์ด ๋ ๋๋ง ๋๋ ํ์๋
React
์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์์์ด๋ค.
Root DOM node
1
<div id="root"></div>
- ๋ชจ๋
React
์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจ๋๋ ํ์์ ์ธ ์ฝ๋์ด๋ค. - ์ด
div
ํ๊ทธ ์์React Element
๋ค์ด ์ค์ ๋ก ๋ ๋๋ง ๋๋ ๊ฒ์ด๋ค. - ํ๋์
React
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ๊ฐ์Root DOM node
๋ฅผ ๊ฐ๊ฒ ๋ ์๋ ์๋ค.
React Element
๋ ๋๋ง
1
2
3
const element = <h1>ํ
์คํธ</h1>;
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(element);
render()
ํจ์๋ฅผ ํตํดRoot DOM node
์React Element
๋ฅผ ๋ ๋๋ง ํ๋ ์ฝ๋์ด๋ค.
์ค์ต
1
2
3
4
5
6
7
8
9
10
11
12
import React from "react";
function Clock() {
return (
<div>
<h1>๐ ํ์ฌ ์๊ฐ</h1>
<h2>โ
{new Date().toLocaleTimeString()}</h2>
</div>
);
}
export default Clock;
- ๋จ์ํ ํ์ฌ ์๊ฐ์ ๋ณด์ฌ์ฃผ๋
Component
์ด๋ค. - ์ด
Component
๋ง์ผ๋ก๋ ํ๋ฉด์ด ๋จ ํ ๋ฒ๋ฐ์ ๊ฐฑ์ ๋์ง ์์ ๊ฒ์ด๋ค.ย
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';
import Team from './Team';
const root = ReactDOM.createRoot(document.getElementById('root'));
setInterval(() => {
root.render(
<React.StrictMode>
<Clock/>
</React.StrictMode>
);
}, 1000);
reportWebVitals();
setInterval()
ํจ์๋ฅผ ํตํด ์ผ์ ์๊ฐ๋ง๋คClock
Component
๋ฅผ ๋ ๋๋ง ํ๋ค.new Date().toLocaleTimeString()
๊ฐ์ด 1์ด๋ง๋ค ๊ฐฑ์ ๋๋ฉด์ยClock
Component
์ ์์ฑ ๊ฐ์ด ๊ณ์ ๋ฐ๋๊ฒ ๋๋๋ฐ, ์ด๋React
๊ฐ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ 1์ด๋ง๋ค ๋ ๋๋ง์ ํ๋ ๊ฒ์ด๋ค.ย
ํ๊ณ
React
๋ ๋ณ๊ฒฝ์ฌํญ์ด ์กด์ฌํ๋Component
๋ง ๋ถ๋ถ์ ์ผ๋ก ๋ ๋๋ง ํ๋ค๋ ์ฌ์ค์ ์ ์ ์์๋ค.
This post is licensed under CC BY 4.0 by the author.