Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • 프로그래머스
  • 데이터 타입
  • Rust
  • CSS
  • mysql
  • Haskell
  • 문자열
  • go
  • koa
  • redis
  • Til
  • Java
  • React
  • 하스켈
  • html5
  • PostgreSQL
  • javascript
  • 알고리즘
  • html
  • Flutter

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[React] JSX 문법이란?
프론트 엔드/React

[React] JSX 문법이란?

2022. 1. 16. 15:51
728x90

JSX 란 무엇일까?

jsx는 자바스크립트의 XML이다. 자바스크립트 문법의 확장판으로써 React에서 요소를 제공한다.

 

JSX는 다음과 같은 특징을 갖는다.

  • 컴파일에 최적화 되어있다.
  • 컴파일 과정이 필요하기 때문에 변환하는 과정에서 오류가 있다면 빌드시 오류를 발생한다.
  • 확장자는 .jsx 나 .js를 사용할 수 있다.

JSX 코드의 변환 과정

jsx는 HTML 코드처럼 작성하지만 Babel(바벨)을 통해 자바스크립트 문법으로 변환된다. 이는 Babel 공식 홈페이지에서

실험해볼 수 있다.

 

Babel · The compiler for next generation JavaScript

The compiler for next generation JavaScript

babeljs.io

 

위 홈페이지에서 try it out 탭을 누르면, 좌측 세팅을 es2015, react 버전으로 맞춰줘야 정상적으로 ES5 코드로 

변환 해준다.

const element = <h1 className="gretting">
  Hello, world!    
  </h1>

위의 코드는 바벨을 통해 아래와 같이 변환된다.

"use strict";

const element = /*#__PURE__*/React.createElement("h1", {
  className: "gretting"
}, "Hello, world!");

최족적으로 element에는 다음과 같은 객체가 생성된다.

const element = {
  type: "h1",
  props: {
    className: "greeting",
    children: "Hello, world!",
  },
};

JSX 문법

JSX는 닫는 태그를 꼭 써주어야 한다.

import React from "react";

function App() {
  return <div></div>;
}

export default App;
import React from "react";

function App() {
  return <div />;
}

export default App;

Fragment

React에서는 두 개 이상의 태그를 사용할 때 전체를 감싸는 태그가 필요한데, 이 때 div태그를 쓰지 않기위해서

Fragment를 사용한다.

import React, {Fragment} from 'react';

function App() {
  return (
     <Fragment>
       <ChildA />
       <ChildB />
       <ChildC />
     </Fragment>
  )
}

또는 다음과 같이 Fragment를 생략하고 사용할 수 있다.

import React, { Fragment } from "react";

function App() {
  return (
    <>
      <ChildA />
      <ChildB />
      <ChildC />
    </>
  );
}

단, 단축표기법을 사용할 경우 정의나 key를 사용할 수 없다.

 

변수 사용

import React, { Component } from "react";

class App extends Component {
  render() {
    const title = "Hello World";
    return (
      <div>
        <h1>{title}</h1>
      </div>
    );
  }
}

export default App;

위 코드에서처럼 {} 에 변수를 적어서 사용한다.

 

참고 자료

 

JSX

JSX는 자바스크립트 XML이다. 자바스크립트 문법의 확장판으로 리액트에서 요소를 제공한다.JSX는 다음과 같은 특징을 갖는다.컴파일에 최적화 되어 있다.컴파일 과정이 필요하기 때문에 변환 과

velog.io

 

'프론트 엔드 > React' 카테고리의 다른 글

[React] React 조건부 렌더링  (0) 2022.01.16
[React] create-react-app & Typescript 초기 세팅법 완벽 정리  (0) 2021.10.21
[React] 컴포넌트 라이프 사이클과 주요 메서드 호출 순서  (0) 2021.10.14
    '프론트 엔드/React' 카테고리의 다른 글
    • [React] Virtual DOM 이란?
    • [React] React 조건부 렌더링
    • [React] create-react-app & Typescript 초기 세팅법 완벽 정리
    • [React] 컴포넌트 라이프 사이클과 주요 메서드 호출 순서
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바