ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] JSX에 대해 알아보기
    Front-end/react 2022. 8. 5. 21:33

    JSX란?

    - A synyax extension to JavaScript (자바스크립트의 확장 문법)

    - JavaScript + XML/HTML

    const element = <h1>Hello, world!</h1>;

    JSX의 역할

    - XML, HTML을 JavaScript로 변환(createElement 함수 사용)하는 과정을 거친다

    /* JSX를 사용한 코드 */
    
    const element = (
       <h1 className="greeting">
          Hello, world!
       </h1>
    
    
    
    /* JSX를 사용하지 않은 코드 */
    
    const element = React.createElement(
       'h1',
       { className: 'greeting' },
       'Hello, world!'
    
    
    /* React.createElement()의 결과로 자바스크립트 객체가 생성됨  */
    
    const element = {
       type: 'h1',
       props: {
          className: 'greeting',
          children: 'Hello, world!'
       }
    }

     

    createElement()의 매개변수

    • type,
    • [props],
    • [...children]

     


    JSX의 장점

    1. 코드가 간결해진다

    /* JSX 사용함 */
    <div> Hello, {name} </div>
    
    /* JSX 사용 안함 */
    React.createElement( 'div', null, `Hello, ${name}` );

    2. 가독성이 좋아진다 (->버그를 발견하기 쉬워진다)

    3. 보안성이 올라간다 (->Injection Attacks 방어)

     


    JSX 사용법

    XML/HTML + 자바스크립트 문법

    function getGreeting(user) {
       if (user) {
          return <h1>Hello, {formatName(user)}!</h1>;
       }
       return <h1>Hello, Stranger.</h1>
    }

     

    태그의 속성(attribute)에 값을 넣는 방법

    // (1) 큰 따옴표 사이에 문자열 넣기
    const element = <div tabIndex="0"></div>;
    
    // (2) 중괄호 사이에 자바스크립트 코드 넣기
    const element = <img src={user.avatarUrl}></img>;

     

    자식(children)을 정의하는 방법

    // 자식을 정의하는 방법
    
    
    const element = (
       <div>
          <h1>안녕하세요</h1> //div의 자식
          <h2>리액트 공부중입니다</h2> //div의 자식
       </div>
    );

     

     


    jsx 파일을 생성한 뒤

    index.js에 jsx파일을 import해서 웹사이트에 출력해볼 수 있도록 했다

     

     

     

     

    'Front-end > react' 카테고리의 다른 글

    [React] 댓글 컴포넌트 만들기  (0) 2022.08.08
    [React] 시계 만들기  (0) 2022.08.08
    [React] React Element, Component  (0) 2022.08.07
    [React] 개요  (0) 2022.08.05
    [React] 리액트 시작 전 준비하기  (0) 2022.08.05
Designed by Tistory.