<aside> ๐Ÿ’ก JSX?? (JavaScript XML)

</aside>

JSX๋ž€?


์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋‹ค. ๋ฆฌ์•กํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ HTML ๋ฌธ๋ฒ•๊ณผ ๋น„์Šทํ•œ ์ด JSX ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

๊ทœ์น™


HTML ๊ณผ ๋‹ค๋ฅธ ์†์„ฑ๋ช…

1. ์†์„ฑ๋ช…์€ ์นด๋ฉœ ์ผ€์ด์Šค๋กœ ์ž‘์„ฑํ•˜๊ธฐ

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')
);

2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ˆ์•ฝ์–ด์™€ ๊ฐ™์€ ์†์„ฑ๋ช…์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

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')
);

Fragment

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')
); // ์ถ•์•ฝํ˜•