Jieunny의 블로그

리액트의 확장자 JSX 본문

React/etc

리액트의 확장자 JSX

Jieunny 2022. 1. 1. 15:23
  • JSX : javascript XML의 약자로 자바 스크립트에 XML 문법을 추가한 확장형 문법이다.
    • 자바 스크립트에 HTML 문법을 사용 할 수 있다.
    • 확장자는 .jsx, .js, .tsx(타입 스크립트와 호환 가능) 가 사용 가능하다.
    • 이런 형식으로 작성한 코드는 브라우저에서 실행되기 전에 코드가 번들링 되는 과정에서 Babel을 사용하여 자바 스크립트 형태의 코드로 변환된다.
    • 문법 규칙
      • 1) 컴포넌트에 여러 요소가 있다면 반드시 하나의 부모 요소로 감싸야 한다.
        • // 잘못된 코드
          function App(){
            return (
              <h1>Hello</h1>
              <h2>Is it working well?</h2>
            )
          }
          
          // 올바른 코드
          function App(){
            return (
              <div>
                <h1>Hello</h1>
                <h2>Is it working well?</h2>
              </div>
            )
          }
      • 2) JSX 내부에서 코드를 { } 로 감싸면 JS 표현식을 사용할 수 있다.
        • import React from 'react';
          
          function App(){
            const name = 'react';
            return(
              <div>
                <h1>Hello! {name}</h1>	// react 라는 값으로 변환됨.
                <h2>Is it working well?</h2>
              </div>
            )
          }
          
          export default App;
      • 3) JSX 내부에서 { } 안에 if 대신 삼항연산자 사용 가능하다.
      • 4) AND 연산자 (&&)를 사용한 조건부 렌더링이 가능하다.
      • 5) undefined 를 렌더링하지 않는다.
        • function App(){
            const name = 'undefined';	// undefined을 렌더링하게 되면 에러를 발생시킨다.
            return name;
          }
          
          function App(){
            const name = 'undefined';	
            return name || '값이 undefined 입니다' ;	// 해당 값이 undefined 일때 사용할 값을 지정함으로써 에러 방지
          }
          
          function App(){
            const name = 'undefined';	
            return <div>{name}</div>;	// JSX 내부에서 undefined를 렌더링 하는 것은 괜찮다
          }

 

  • 리액트를 설치하면 생성되는 기본파일 중 App.js는 루트 컴포넌트 이다.
  • 여기서 render 함수 안에 HTML 처럼 생긴 코드들이 JSX 코드이다.
  • .js로 파일을 생성하면 render() 에서 태그가 자동완성 되지 않는다.
  • React 에서는 .jsx로 작성해야 HTML 기능이 자동 완성 된다.
  • HTML 문법이지만 이는 HTML 이 아니라 자바스크립트이다.

'React > etc' 카테고리의 다른 글

Type Script (코딩애플)  (0) 2022.01.06
블로그  (0) 2021.12.28
React (코딩애플)  (0) 2021.12.27
CSS 속성 선언 순서  (0) 2021.12.26
CRA 없이 React 환경 구축  (0) 2021.12.19