PROGRAMMING/React

React : JSX

\b\t 2021. 3. 20. 02:19

JSX λž€?

λ¦¬μ•‘νŠΈμ—μ„œ μ»΄ν¬λ„ŒνŠΈλ₯Ό μž‘μ„±ν•  λ•Œ μ‚¬μš©ν•˜λŠ”, JavaScript λ₯Ό ν™•μž₯ν•œ 문법.

JSX λ₯Ό λ‹€λ£° λ•Œ κΈ°μ–΅ν•΄μ•Ό ν•  것은, JSX λŠ” ν‘œν˜„μ‹μ΄λΌλŠ” 것이닀.

κ·Έλž˜μ„œ λ³€μˆ˜μ— ν• λ‹Ήν•˜κ³ , 인자둜 받아듀이고, ν•¨μˆ˜λ‘œ λ°˜ν™˜ν•˜κ³ , ν‘œν˜„μ‹μ„ 포함할 수 μžˆλ‹€.

 

λ³€μˆ˜μ— ν• λ‹Ήν•˜κΈ°

κ°€μž₯ 기본적인 ν˜•νƒœμ΄λ‹€.

const element = <h1>Hello, world!</h1>;

κ·Έ 자체둜 ν‘œν˜„μ‹μ΄κΈ° λ•Œλ¬Έμ— λ‹Ήμ—°νžˆ λ³€μˆ˜μ— ν• λ‹Ήν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

μ΄λ ‡κ²Œ μž‘μ„±ν•œ JSX λŠ” React "Element" λ₯Ό μƒμ„±ν•œλ‹€.

 

ν‘œν˜„μ‹ ν¬ν•¨ν•˜κΈ°

JSX λŠ” JavaScript ν‘œν˜„μ‹μ„ 포함할 수 μžˆλ‹€.

const name = 'react';
const element = <div>hello {name}!</div>;
const element2 = <div>hello {userFunc(name)}!</div>;
const element3 = <div>hello {2+2}!</div>;

μœ„μ˜ μ˜ˆμ‹œμ²˜λŸΌ, JavaScript 의 μœ νš¨ν•œ λͺ¨λ“  ν‘œν˜„μ‹μ„ {} (μ€‘κ΄„ν˜Έ) κ°μ‹Έμ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

λ˜ν•œ, 속성에 λ”°μ˜΄ν‘œλ₯Ό μ΄μš©ν•˜μ—¬ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ„ μ •μ˜ν•  수 μžˆλ‹€.

const element = <div userIndex="0"></div>;

 

단, μœ„μ˜ 두 방식을 μ„žμ–΄μ„œ 쓰지 μ•Šλ„λ‘ μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.

(κ°€λ Ή, μ€‘κ΄„ν˜Έ 주변에 λ”°μ˜΄ν‘œλ₯Ό μž…λ ₯ν•˜λŠ” 것은 κΈˆμ§€λœλ‹€.)

즉 μ€‘κ΄„ν˜Έ (ν‘œν˜„μ‹μ— μ‚¬μš©) κ³Ό λ”°μ˜΄ν‘œ (λ¬Έμžμ—΄ 값에 μ‚¬μš©) λ₯Ό λ™μΌν•œ μ–΄νŠΈλ¦¬λ·°νŠΈμ— λ™μ‹œμ— μ‚¬μš©ν•˜λ©΄ μ•ˆλ˜κ³ , ν•˜λ‚˜λ§Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

λͺ‡ 가지 μ€‘μš”ν•œ κ·œμΉ™

JSX λŠ” 얼핏 λ³΄κΈ°μ—λŠ” html κ°™μ§€λ§Œ, JavaScript 이닀.

HTML κ³Ό λΉ„μŠ·ν•œ λ¬Έλ²•μœΌλ‘œ μž‘μ„±ν•˜λ©΄ 이λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ Javascript ν˜•νƒœλ‘œ λ³€ν™˜μ‹œμΌœμ€€λ‹€. λ³€ν™˜μ„ μœ„ν•΄ μ§€μΌœμ•Ό ν•  μ€‘μš”ν•œ κ·œμΉ™μ΄ μžˆλŠ”λ°,

  • νƒœκ·ΈλŠ” κΌ­ λ‹«ν˜€μžˆμ–΄μ•Ό ν•œλ‹€. (br νƒœκ·Έ λ“± 주의)
  • 두 개 μ΄μƒμ˜ Element λŠ” 무쑰건 ν•˜λ‚˜μ˜ Element 둜 κ°μ‹Έμ Έμžˆμ–΄μ•Ό ν•œλ‹€.
    (λ‹¨μˆœνžˆ 이λ₯Ό μœ„ν•΄ div λ₯Ό μ“°κΈ° μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ Fragment 둜 κ°μ‹Έμ£Όμž. 단, 16.2 λΆ€ν„° λ„μž…λœ Fragment κΈ°λŠ₯!)
<div> //<Fragment>
  <div>
  Hello
  </div>
  <div>
  Bye
  </div>
</div> //</Fragment>

 

λ˜ν•œ, JSX λŠ” HTML 보닀 JavaScript 에 κ°€κΉŒμš°λ‹ˆ, camelCase ν”„λ‘œνΌν‹° λͺ…λͺ… κ·œμΉ™μ„ μ‚¬μš©ν•œλ‹€.

HTML μ—μ„œλŠ” onclick 둜 μž‘μ„±ν•˜λ˜ 것을 onClick 둜 μž‘μ„±ν•΄μ•Όμ§€ 였λ₯˜κ°€ λ‚˜μ§€ μ•ŠλŠ”λ‹€.

 

ꢌμž₯ 사항

  • 가독성을 μœ„ν•΄ 쀄 λ°”κΏˆ
  • μžλ™ μ„Έλ―Έμ½œλ‘  μ‚½μž… 방지λ₯Ό μœ„ν•΄ κ΄„ν˜Έλ‘œ λ¬ΆκΈ°
const element = (
  <h1>
    Hello, {userFunc(name)}!
  </h1>
);

 


Ref.

React 곡식 λ¬Έμ„œ ko.reactjs.org/docs/introducing-jsx.html

.