JSX에 대해 알아보자

2025. 5. 7. 03:21·FrontEnd 공부/React

1. JSX란

JSX는 JavaScript를 확장한 문법으로, JavaScript 파일을 HTML과 비슷하게 마크업을 작성할 수 있도록 해줍니다. 컴포넌트를 작성하는 다른 방법도 있지만, 대부분의 React 개발자는 JSX의 간결함을 선호하며 대부분의 코드 베이스에서 JSX를 사용합니다.

https://ko.react.dev/learn/writing-markup-with-jsx

 

JSX로 마크업 작성하기 – React

The library for web and native user interfaces

ko.react.dev

 

그러나 JSX는 HTML보다 엄격한 규칙을 가지고 있기 때문에 다음 규칙(가이드)를 따라야한다!

 

2. JSX 규칙

2.1 하나의 루트 엘리먼트로 반환하기

한 컴포넌트에서 여러 엘리먼트를 반환하려면, 꼭 하나의 상위 부모 태그로 감싸야한다.

  <h1>Hedy Lamarr's Todos</h1>
  <img
    src="https://i.imgur.com/yXOvdOSs.jpg"
    alt="Hedy Lamarr"
    class="photo"
  >
  <ul>
    ...
  </ul>

이런 코드가 있으면 꼭 다음과 같이 부모 태그로 감싸야한다.

<div>
  <h1>Hedy Lamarr's Todos</h1>
  <img
    src="https://i.imgur.com/yXOvdOSs.jpg"
    alt="Hedy Lamarr"
    class="photo"
  >
  <ul>
    ...
  </ul>
</div>

// <div><div/> 대신 <></>를 사용할 수 도 있다.

 

꼭 하나의 부모 태크고 감싸야 하는 이유!

더보기

JSX는 HTML처럼 보이지만 내부적으로는 일반 JavaScript 객체로 변환됩니다. 하나의 배열로 감싸지 않은 하나의 함수에서는 두 개의 객체를 반환할 수 없습니다. 따라서 또 다른 태그나 Fragment로 감싸지 않으면 두 개의 JSX 태그를 반환할 수 없습니다.

 

2.2 모든 태그는 닫아주자.

나는 항상 습관처럼 태그를 연다면 닫는 태그를 항상 사용한다.

HTML에서 닫는 태그가 없어도 잘 동작하지만 JSX는 그러면 안된다.

 

2.3 대부분 캐멀 케이스로

JSX가 JavaScript로 바뀔 때, 작성된 어트리뷰트(속성)은 JavaScripty 객체의 Key가 된다.

종종 컴포넌트에서 해당 어트리뷰트를 변수로 읽으려는 경우가 있고 JavaScript에는 예약어나 다른 변수명에 제약이 있으므로 이를 방지하지 위해 캐멀케이스로 작성한다.

 

ex class="" 가 아닌 className="" 을 사용하는 이유

 

3. React 공식 문서 JSX 마크업 챌린지

다음 React 공식 문서에서 간단한 챌린지로 위 내용을 쉽게 익혀볼 수 있다.!

https://ko.react.dev/learn/writing-markup-with-jsx#challenges

 

JSX로 마크업 작성하기 – React

The library for web and native user interfaces

ko.react.dev

 

'FrontEnd 공부 > React' 카테고리의 다른 글

리스트 렌더링  (0) 2025.05.12
조건부 렌더링  (0) 2025.05.11
컴포넌트에 Props 전달하기  (0) 2025.05.11
중괄호가 있는 JSX 안에서 자바스크립트 사용하기  (1) 2025.05.10
Vite로 React 프로젝트 생성하기  (0) 2025.04.28
'FrontEnd 공부/React' 카테고리의 다른 글
  • 조건부 렌더링
  • 컴포넌트에 Props 전달하기
  • 중괄호가 있는 JSX 안에서 자바스크립트 사용하기
  • Vite로 React 프로젝트 생성하기
koreaioi
koreaioi
  • koreaioi
    koreaioi
    koreaioi
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • JAVA (2)
      • 알고리즘 (88)
        • 백준 (11)
        • String(문자열) (12)
        • Array(1, 2차원 배열) (13)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
        • 기초 수학 (1)
      • 일상 (22)
      • Github (1)
      • MSA 공부 (4)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (15)
      • FrontEnd 공부 (9)
        • React (8)
      • Spring (2)
      • 기술 세미나 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
koreaioi
JSX에 대해 알아보자
상단으로

티스토리툴바