JSX

1. JSXλž€?

  • Reactμ—μ„œ UIλ₯Ό ꡬ성할 λ•Œ μ‚¬μš©ν•˜λŠ” JavaScriptλ₯Ό ν™•μž₯ν•œ 문법이며, 이λ₯Ό ν™œμš©ν•΄ React elementλ₯Ό λ§Œλ“€ 수 있음

  • 'Babel'둜 JSXλ₯Ό λΈŒλΌμš°μ €κ°€ 이해할 수 μžˆλŠ” JavaScript둜 compile -> JavaScriptλ₯Ό λΈŒλΌμš°μ €κ°€ 읽고 화면에 λ Œλ”λ§ κ°€λŠ₯

  • Reactμ—μ„œλŠ” DOMκ³ΌλŠ” λ‹€λ₯΄κ²Œ CSS, JSX λ¬Έλ²•λ§ŒμœΌλ‘œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 κ°€λŠ₯. 즉, JavaScript만으둜 λ§ˆν¬μ—… ν˜•νƒœμ˜ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ—¬ DOM에 배치 κ°€λŠ₯ (단, JSXλŠ” HTML이 μ•„λ‹ˆκΈ°μ— Babel둜 compile ν•„μš”)

2. JSX 문법

  • ν•˜λ‚˜μ˜ μ—˜λ¦¬λ¨ΌνŠΈ μ•ˆμ— λͺ¨λ“  μ—˜λ¦¬λ¨ΌνŠΈκ°€ 포함. μ΅œμƒμœ„μ—μ„œ opening tag와 closing tag둜 감싸주어야 함

    <div>
      <div>
        <h1>Hello</h1>
      </div>
      <div>
        <h2>World</h2>
      </div>
    </div>
  • μ—˜λ¦¬λ¨ΌνŠΈ 클래슀 μ‚¬μš© μ‹œ, className으둜 ν‘œκΈ°

    <div className = "greeting">Hello</div>
  • JavaScript ν‘œν˜„μ‹ μ‚¬μš© μ‹œ, μ€‘κ΄„ν˜Έ 이용

    function App () {
      const name = 'Ella Choi';
      return (
        <div>
        Hello, {name}!
        </div>
      );
    }
  • μ‚¬μš©μž μ •μ˜ μ»΄ν¬λ„ŒνŠΈλŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘

    function Hello() {
      return <div>Hello!</div>
    }
    
    function HelloWorld() {
      return <Hello />;
    }
  • 쑰건뢀 λ Œλ”λ§μ—λŠ” if문이 μ•„λ‹Œ, μ‚Όν•­μ—°μ‚°μž μ‚¬μš©

    <div>
      {
        (1+1 === 2) ? (<p>μ •λ‹΅</p>) : <p>νƒˆλ½</p>)
      }
    </div>
  • μ—¬λŸ¬ 개의 HTML μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό ν‘œμ‹œν•  λ•Œ, map()ν•¨μˆ˜ μ‚¬μš©ν•˜λ©°, λ°˜λ“œμ‹œ 'key'JSX 속성을 λ„£μ–΄μ•Ό 함.

    const posts = [
      {id: 1, title: 'Hello World', content: 'Welcome to learning React!'},
      {id: 2, title: 'Installation', content: 'You can install React from npm'}
    ];
    
    function Blog() {
      const content = posts.map((post) =>
        <div key = {post.id}>
        <h3>{post.title}</h3>
        <p>{post.content}</p>
        </div>
      );
      return (
        <div>
        {content}
        </div>
      );
    }
  • λ°°μ—΄μ˜ 각 μš”μ†ŒλŠ” 각각 λ³€μˆ˜μ— λ‹΄κΈΈ 수 μžˆλŠ” ν•˜λ‚˜μ˜ JSX ν‘œν˜„μ‹μž„.

    const Hello - () => {
      return (
        [<div>μ•ˆλ…•ν•˜μ„Έμš”</div>, <div>λ°˜κ°‘μŠ΅λ‹ˆλ‹€</div>]
      )
    }

Last updated