์๋ฆฌ๋จผํธ (Element)
๋ธ๋ผ์ฐ์ ์ ์ปจํ
์ธ ๋ฅผ ํํํ๋ ํ๋์ ๋จ์
์๋ฆฌ๋จผํธ๋ React์์ ์ปดํฌ๋ํธ๊ฐ ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ํ๋ด๋ ๋ด์ฉ์ ํํํ๋ ๋จ์์
๋๋ค. React์์ ์๋ฆฌ๋จผํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๊ฐ ์๋ฆฌ๋จผํธ๋ ๊ฐ์ DOM (Virtual DOM)์์ ์ปดํฌ๋ํธ์ ์ธ์คํด์ค์ ๋์ํฉ๋๋ค.
JSX์์๋ ๋ชจ๋ ์๋ฆฌ๋จผํธ์ ๋ํด ์ข
๋ฃ ํ๊ทธ๋ฅผ ๋ช
์์ ์ผ๋ก ์์ฑํด์ผ ํฉ๋๋ค.
(HTML์์๋ ๋ช๋ช ํ๊ทธ์์ ๋ซ๋ ํ๊ทธ๊ฐ ์๋ต๋์ด๋ ์ ํจํฉ๋๋ค.)
HTML ์ธ ๊ฒฝ์ฐ OK
<input type="text" name="test">
HTML
๋ณต์ฌ
React ์ธ ๊ฒฝ์ฐ ERROR
<input type="text" name="test">
HTML
๋ณต์ฌ
React ์ธ ๊ฒฝ์ฐ
<input type="text" name="test" />
HTML
๋ณต์ฌ
์ข
๋ฃ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ / ๋ฅผ ๋ฐ๋์ ๋ช
์ํด์ผํ๋ค.
์๋ฆฌ๋จผํธ์ ์์ฑ
์๋ฆฌ๋จผํธ๋ React ํจ์๋ฅผ ์ด์ฉํด์ ์์ฑํ ์๋ ์์ผ๋ฉฐ, React ํ์ฅ ๋ฌธ๋ฒ์ธ JSX ๋ฅผ ํตํด์๋ ์์ฑํ ์ ์์ต๋๋ค.
1.
React JavaScript ์ฝ๋
2.
JSX ์ฝ๋
React JavaScript ์ฝ๋
๋ฌธ๋ฒ
React.createElement( type, props, chlidren);
JavaScript
๋ณต์ฌ
1.
type (ํ์
)
โข
์๋ฆฌ๋จผํธ์ ํ์
์ ๋ํ๋
๋๋ค. ์ด๋ ์์ฑํ๋ ค๋ ์๋ฆฌ๋จผํธ์ ์ข
๋ฅ๋ฅผ ์ง์ ํฉ๋๋ค.
โข
์๋ฅผ ๋ค์ด, HTML ํ๊ทธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ๋ฌธ์์ด๋ก ํ๊ทธ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ์: 'div', 'span', 'h1' ๋ฑ.
โข
์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ํด๋น ์ปดํฌ๋ํธ์ ํจ์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
2.
props (์์ฑ)
โข
์๋ฆฌ๋จผํธ์ ๋ถ์ฌํ ์์ฑ(properties ๋๋ props)์ ๋ํ๋
๋๋ค.
โข
๊ฐ์ฒด ํํ๋ก ์ ๋ฌ๋๋ฉฐ, ์์ฑ์ ํด๋น ์๋ฆฌ๋จผํธ๊ฐ ์ด๋ป๊ฒ ๋์ํ๊ณ ์ด๋ป๊ฒ ํ์๋ ์ง์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
3.
children (์์)
โข
์๋ฆฌ๋จผํธ์ ์์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ํ๋
๋๋ค.
โข
ํ
์คํธ, ๋ค๋ฅธ React ์๋ฆฌ๋จผํธ, ๋๋ ๋ฐฐ์ด๋ก ์ฌ๋ฌ ์์์ ๊ฐ์ง ์ ์์ต๋๋ค.
์์์ฝ๋1
const element = React.createElement('h1', null, 'Hello, World!');
JavaScript
๋ณต์ฌ
React.createElement ํจ์๋ React ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค.
1.
์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์๋ฆฌ๋จผํธ์ ํ์
์ด๋ฉฐ, ๋ฌธ์์ด 'h1'์ <h1> HTML ์๋ฆฌ๋จผํธ๋ฅผ ๋ํ๋
๋๋ค.
2.
๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์๋ฆฌ๋จผํธ์ ์์ฑ(properties ๋๋ props)์ด๋ฉฐ, null์ ์์ฑ์ด ์์์ ๋ํ๋
๋๋ค.
3.
์ธ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์๋ฆฌ๋จผํธ์ ์์(children)์ด๋ฉฐ, 'Hello, World!'๋ <h1> ์๋ฆฌ๋จผํธ ์์ ํ
์คํธ๋ก ํ์๋ ๋ด์ฉ์
๋๋ค.
์์์ฝ๋2
const element = React.createElement(
'a', // type: ํ๊ทธ ์ด๋ฆ ๋๋ ์ปดํฌ๋ํธ
{
href: 'https://www.example.com', // props: ์๋ฆฌ๋จผํธ์ ๋ถ์ฌํ ์์ฑ
target: '_blank',
style: { color: 'blue' }
},
'https://wwwaloha.oopy.io/' // children: ์๋ฆฌ๋จผํธ์ ์์
);
JavaScript
๋ณต์ฌ
JSX ์ฝ๋
React ์๋ฆฌ๋จผํธ๋ JavaScript ํํ์์ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค. JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด HTML๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ผ๋ก React ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ฌธ๋ฒ
const element = <type prop="">childeren</h1>;
JavaScript
๋ณต์ฌ
1.
type (ํ์
)
โข
์๋ฆฌ๋จผํธ์ ํ์
์ ๋ํ๋
๋๋ค. ์ด๋ ์์ฑํ๋ ค๋ ์๋ฆฌ๋จผํธ์ ์ข
๋ฅ๋ฅผ ์ง์ ํฉ๋๋ค.
โข
์๋ฅผ ๋ค์ด, HTML ํ๊ทธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ๋ฌธ์์ด๋ก ํ๊ทธ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ์: 'div', 'span', 'h1' ๋ฑ.
โข
์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ํด๋น ์ปดํฌ๋ํธ์ ํจ์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
2.
props (์์ฑ)
โข
์๋ฆฌ๋จผํธ์ ๋ถ์ฌํ ์์ฑ(properties ๋๋ props)์ ๋ํ๋
๋๋ค.
โข
๊ฐ์ฒด ํํ๋ก ์ ๋ฌ๋๋ฉฐ, ์์ฑ์ ํด๋น ์๋ฆฌ๋จผํธ๊ฐ ์ด๋ป๊ฒ ๋์ํ๊ณ ์ด๋ป๊ฒ ํ์๋ ์ง์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
3.
children (์์)
โข
์๋ฆฌ๋จผํธ์ ์์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ํ๋
๋๋ค.
โข
ํ
์คํธ, ๋ค๋ฅธ React ์๋ฆฌ๋จผํธ, ๋๋ ๋ฐฐ์ด๋ก ์ฌ๋ฌ ์์์ ๊ฐ์ง ์ ์์ต๋๋ค.
์์์ฝ๋1
const element = <h1>Hello, World!</h1>;
JavaScript
๋ณต์ฌ
์์์ฝ๋2
const element = (
<a href="https://www.example.com" target="_blank" style={{ color: 'blue' }}>
https://www.aloha.oopy.io/
</a>
);
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ํน์ง
React ์๋ฆฌ๋จผํธ๋ ๊ฐ์ DOM์์ ์ปดํฌ๋ํธ์ ์ํ ๋ณํ์ ๋ฐ๋ผ ์
๋ฐ์ดํธ๋๊ณ , React๊ฐ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ค์ DOM์ ๋ณ๊ฒฝ ์ฌํญ์ ์ต์ํํฉ๋๋ค.
const element = <p>{new Date().toLocaleTimeString()}</p>;
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ๋ ๋๋ง
React ์๋ฆฌ๋จผํธ๋ ReactDOM.render()๋ ์ปดํฌ๋ํธ์ ๋ ๋ ๋ฉ์๋ ๋ฑ์ ํตํด ์ค์ DOM์ ๋ ๋๋ง๋ฉ๋๋ค.
ReactDOM.render(element, document.getElementById('root'));
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ๊ตฌ์ฑ์์
โข
์ปจํ
์ธ
โฆ
ํ
์คํธ
โฆ
์์ ์๋ฆฌ๋จผํธ
โข
์์ฑ
์๋ฆฌ๋จผํธ์ ํ ์คํธ ์ปจํ ์ธ ๋ง ๊ตฌ์ฑ
const element = <h1>Hello, World!</h1>;
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ์ ์์ ์๋ฆฌ๋จผํธ ๊ตฌ์ฑ
const element = (
<div>
<h1>Title</h1>
<p>Paragraph content</p>
</div>
);
JavaScript
๋ณต์ฌ
์๋ฆฌ๋จผํธ ์์ฑ
JSX์์๋ HTML๊ณผ ์ ์ฌํ ์์ฑ์ ์ฌ์ฉํ ์ ์์ง๋ง ๋ช ๊ฐ์ง ์ฐจ์ด๊ฐ ์์ต๋๋ค.
html ๊ณผ ์ฐจ์ด๊ฐ ์๋ React ์๋ฆฌ๋จผํธ ์์ฑ
1.
class ์์ฑ
2.
style ์์ฑ
class ์์ฑ
JSX์์๋ HTML์ class ์์ฑ์ className์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ JavaScript์์ class๋ ์์ฝ์ด์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
// HTML
<div class="my-class">Hello</div>
// JSX
<div className="my-class">Hello</div>
HTML
๋ณต์ฌ
style ์์ฑ
HTML์์๋ style ์์ฑ์ ๋ฌธ์์ด๋ก CSS๋ฅผ ์ง์ ํ์ง๋ง, JSX์์๋ ๊ฐ์ฒด ํํ๋ก ์คํ์ผ์ ์ง์ ํฉ๋๋ค.
// HTML
<div style="color: red; font-size: 16px;">Hello</div>
// JSX
<div style={{ color: 'red', fontSize: '16px' }}>Hello</div>
HTML
๋ณต์ฌ