<aside> ๐ก JSX?? (JavaScript XML)
</aside>
์๋ฐ์คํฌ๋ฆฝํธ ํ์ฅ ๋ฌธ๋ฒ์ด๋ค. ๋ฆฌ์กํธ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋ HTML
๋ฌธ๋ฒ๊ณผ ๋น์ทํ ์ด JSX
๋ฌธ๋ฒ์ ํ์ฉํ์ฌ ๋ ํธ๋ฆฌํ๊ฒ ํ๋ฉด์ ๋ํ๋ผ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ๋๋ค.
JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํ ๋ ์นด๋ฉ ์ผ์ด์ค๋ก ์์ฑํด์ผํ๋ ๊ท์น์ด ์๋ค.
onClick
, onBlur
, onFocus
, onMouseDown
, onMouseOver
, tabIndex
๊ฐ์ ์์ฑ๋ค์ ์์ฑํ ๋ ์นด๋ฉ ์ผ์ด์ค๋ก ์์ฑํ๋ค.
์์ธ์ ์ผ๋ก HTML
์์ ๋นํ์ค ์์ฑ์ ๋ค๋ฃฐ ๋ ํ์ฉํ๋ data-*
์์ฑ์ ๊ธฐ์กด HTML
๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
import ReactDOM from 'react-dom';
ReactDOM.render(
<button onClick= ... >ํด๋ฆญ!</button>, // ์นด๋ฉ ์ผ์ด์ค ์์ฑ
document.getElementById('root')
);
ReactDOM.render(
<div>
์ํ ๋ณ๊ฒฝ:
<button className="btn" data-status="๋๊ธฐ์ค">๋๊ธฐ์ค</button> // data ์์ฑ์ HTML ๋ฌธ๋ฒ ๊ทธ๋๋ก
<button className="btn" data-status="์งํ์ค">์งํ์ค</button>
<button className="btn" data-status="์๋ฃ">์๋ฃ</button>
</div>,
document.getElementById('root')
);
HTML ๋ฌธ๋ฒ ์ค for
๋ฌธ๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ๋ณต๋ฌธ์ ํค์๋ for
์ ๊ฒน์น๊ธฐ ๋๋ฌธ์ htmlFor
๋ก
HTML์ class
์์ฑ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ class
ํค์๋์ ๊ฒน์น๊ธฐ์ className
์ผ๋ก ์์ฑํด์ผํ๋ค.
import ReactDOM from 'react-dom';
ReactDOM.render(
<form>
<label htmlFor="name">์ด๋ฆ</label>
<input id="name" className="name-input" type="text" />
</form>,
document.getElementById('root')
);
JSX ๋ฌธ๋ฒ์ ํ์ฉํ ๋๋ ๋ฐ๋์ ํ๋์ ์์๋ก ๊ฐ์ธ์ค์ผํ๊ธฐ์ ์ถ๊ฐ์ ์ธ DOM ๋ ธ๋๋ฅผ ์์ฑํ์ง ์๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
import ReactDOM from 'react-dom';
ReactDOM.render(
<Fragment>
<p>์๋
</p>
<p>๋ฆฌ์กํธ!</p>
</Fragment>,
document.getElementById('root')
); // ํ๋ผ๊ทธ๋จผํธ ํ๊ทธ
ReactDOM.render(
<>
<p>์๋
</p>
<p>๋ฆฌ์กํธ!</p>
</>,
document.getElementById('root')
); // ์ถ์ฝํ