JSX와 React 요소, JSX의 문법과 특징

React는 사용자 인터페이스(UI)를 구축하기 위한 JavaScript 라이브러리입니다. React의 주요 특징 중 하나는 JSX라는 특별한 문법을 사용하여 UI를 정의한다는 것입니다. JSX는 JavaScript와 HTML을 결합할 수 있는 문법으로, React 컴포넌트를 선언할 때 매우 직관적이고 가독성이 뛰어난 코드를 작성할 수 있도록 도와줍니다.

1. JSX란 무엇인가?

JSX(JavaScript XML)는 JavaScript의 확장 문법으로, HTML 요소를 JavaScript 코드에서 직접 정의할 수 있게 해줍니다. JSX를 사용하면 React 컴포넌트를 정의하기가 더 쉬워지며, 코드의 가독성 또한 크게 향상됩니다. JSX는 JavaScript 코드 내부에 XML과 유사한 구문을 허용하여, HTML과 비슷한 방식으로 UI를 구성할 수 있습니다.

1.1 JSX의 기본 문법

JSX의 기본 문법은 HTML과 매우 유사하지만 몇 가지 규칙이 있습니다. 여기서는 JSX의 기본 사용법에 대해 살펴보겠습니다.

  • HTML 태그와 유사: JSX는 HTML 태그를 거의 그대로 사용할 수 있으며, 각 요소는 소문자로 시작해야 합니다.
  • 속성(props) 설정: JSX에서는 속성을 camelCase로 정의하며, 문자열을 사용할 때는 중괄호({})로 감싸야 합니다.
  • JavaScript 표현식: JSX 내에서 JavaScript 표현식을 사용하고 싶다면 중괄호({})를 사용하면 됩니다.

1.2 JSX의 예제

다음은 JSX를 사용하여 React 컴포넌트를 정의하는 간단한 예제입니다.


      import React from 'react';

      function Greeting() {
          return (
              <div>
                  <h1>안녕하세요, JSX 세계에 오신 것을 환영합니다!</h1>
                  <p className="description">이것은 JSX의 기본 예제입니다.</p>
              </div>
          );
      }

      export default Greeting;
    

위의 예제에서 <div>, <h1>, <p> 태그는 모두 JSX로 작성된 HTML 요소입니다. 또한, class 속성 대신 className 속성을 사용함에 유의하세요.

2. JSX의 특징

JSX의 주요 특징은 다음과 같습니다.

  • 리액티브 렌더링: JSX는 상태(state)와 속성(props)에 따라 동적으로 UI를 업데이트합니다. React가 상태가 변경되면 어떤 부분을 업데이트할지 효율적으로 판단합니다.
  • 하나의 부모 요소: JSX 표현식은 반드시 하나의 부모 요소로 감싸져야 합니다. 여러 요소를 반환할 경우, 반드시 하나의 최상위 요소로 래핑해야 합니다.
  • 주석: JSX 주석은 중괄호를 사용하여 작성합니다. HTML 주석과 다르게, {/* 주석 내용 */} 형식으로 작성됩니다.
  • HTML이 아닌 XML: JSX는 HTML이 아닌 XML의 약간 변형된 형태로, 브라우저가 이를 인식할 수 없기 때문에 Babel과 같은 변환 도구를 통해 JavaScript로 변환해야 합니다.

2.1 JSX 주석 처리 예제


      import React from 'react';

      function CommentedComponent() {
          return (
              <div>
                  {/* 이 부분은 주석 처리된 텍스트입니다 */}
                  <p>주석이 있는 예제입니다.</p>
              </div>
          );
      }
    

3. JSX를 통한 UI 구성

React에서 JSX를 사용하여 UI를 구성하는 방법을 살펴보겠습니다. 여러 개의 컴포넌트를 조합하여 복잡한 UI를 만들 수 있습니다.


      import React from 'react';

      function Header() {
          return <h1>나의 웹사이트</h1>;
      }

      function Footer() {
          return <p>저작권 © 2023</p>;
      }

      function App() {
          return (
              <div>
                  <Header />
                  <p>여기에 내용을 추가하세요.</p>
                  <Footer />
              </div>
          );
      }

      export default App;
    

위의 예제에서는 HeaderFooter 컴포넌트를 정의하고, App 컴포넌트에서 이들을 조합하여 페이지를 구성했습니다.

4. JSX의 변환

JSX는 브라우저가 이해할 수 있는 JavaScript 코드로 변환되어야 합니다. 일반적으로 Babel을 사용하여 JSX를 변환합니다. Babel은 최신 JavaScript 문법과 JSX를 일반 JavaScript로 변환하는 도구입니다.

예를 들어, 다음과 같은 JSX 코드를 Babel이 변환한 결과를 살펴보겠습니다.


      // JSX 코드
      const element = <h1>안녕하세요, React!</h1>;

      // Babel에 의해 변환된 JavaScript 코드
      const element = React.createElement('h1', null, '안녕하세요, React!');
    

5. JSX의 결론

JSX는 React에서 UI를 구성하는 강력하고 직관적인 방법을 제공합니다. JavaScript와 HTML의 경계를 허물며, 가독성이 뛰어난 코드를 작성할 수 있게 해줍니다. JSX의 문법을 이해하고 적절하게 활용함으로써 더 나은 React 애플리케이션을 작성할 수 있습니다.

React를 배우는 과정에서 JSX는 필수적인 부분이며, 이를 잘 이해하고 활용하는 것이 중요합니다. 본 글에서 다룬 JSX의 특징과 문법을 바탕으로 개별적인 UI 컴포넌트를 작성해보세요. 실제 프로젝트에서 경험을 쌓다 보면, JSX에 대한 이해도가 더욱 높아질 것입니다. 리액트의 매력을 느끼면서 즐거운 개발 시간이 되시길 바랍니다!