ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React : JSX
    PROGRAMMING/React 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

    .

    λŒ“κΈ€

Designed by Tistory.