FE코크
탄산 가득 시원한 개발일지
FE코크
전체 방문자
오늘
어제
  • 분류 전체보기 (43)
    • 우아한테크코스 (22)
      • 우아한테크코스4기 (4)
      • 우아한테크코스3 (10)
      • 회고록 (8)
    • Web (0)
      • HTTP 웹 기본지식 (0)
    • JavaScript (2)
    • React.js (12)
    • 알고리즘 풀이 (2)
    • HTML, CSS (4)
    • 기타 (1)
      • 일상 (0)
      • 후기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우아한테크코스 3기
  • 코어자바스크립트
  • React.DOM
  • prop drilling
  • 자바스크립트
  • react.js
  • 레벨1회고
  • 회고
  • CSS
  • 백준
  • createRoot
  • JavaScript
  • Reactjs
  • 노마드코더
  • react
  • 개발자
  • 회고록
  • 주간회고
  • 프론트엔드
  • Props
  • 우테코4기
  • 알고리즘
  • 리액트
  • 우테코
  • jsx
  • 우아한테크코스
  • 4기
  • 프리코스
  • 재택하고싶은데
  • state

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE코크

탄산 가득 시원한 개발일지

[React] JSX
React.js

[React] JSX

2022. 6. 15. 17:28

결, 꼬재랑 함께하는 레벨2 방학 스터디

 

React에서 사용하는 JSX란?

  • JSX(JavaScript XML)는 JavaScript에 XML을 추가, 확장한 문법입니다.
  • XML이란?

XML(eXtensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어 졌다.

HTML의 한계? HTML은 확장용이성, 구조용이성, 문서확인용이성 등에서의 한계가 나타났다. 사용자가 주어진 태그의 범위안에서만 문서내의 데이터를 다뤄야했기 때문이다. 따라서 XML이 나타나게 되었다.

  • JSX는 리액트로 프로젝트를 개발할 때 사용되므로 공식적인 자바스크립트 문법은 아니다.
  • 바벨을 사용하여 일반 JavaScript 형태의 코드로 변환 된 후 브라우저에 적용된다.

 

JSX 관련 문법

JSX는 공식문서를 확인하자!!

JSX 이해하기 - React

 

JSX 이해하기 – React

A JavaScript library for building user interfaces

ko.reactjs.org

 

JSX 관련 궁금증

JSX 사용법은 공식문서가 잘되어 있기 때문에 다음과 질문에 대해 알아 보도록 하겠습니다.

  • #root를 미리 선언해놓는 이유는 무엇일까요?
  • React는 들어본 것 같은데 react-dom은 무엇일까요?
  • render가 하는 일은 무엇일까요?
  • JSX와 표현식은 같을까요?
  • JSX와 React.createElement() 는 무슨 관계일까요?
  • document.createElement()와 다른 점은 무엇일까요?
<div id="root"></div>
import React from 'react';
import ReactDOM from 'react-dom'

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

ReactDOM.render(element, document.getElementById('root'));

 

#root 를 미리 선언해 놓은 이유는 무엇일까요?

ReactDOM.render(element, document.getElementById('root')); React 코드를 보면 항상 다음과 같은 코드가 있는 것을 알 수 있다. 여기서 root를 미리 선언해 놓고 ReactDOM.render에 대입해 주는데 그 이유에 대해 알아 보자.

 

ReactDOM.render()란?

  • render()는 다음과 같이 사용되어 진다. ReactDOM.render(element, container[, callback])
  • render()는 container(HTML 요소)에 element(HTML 코드)를 표시한다.
  • render()는 container DOM에 렌더링 하는데 이전의 container DOM의 요소들을 비교하여 변경된 요소들만 Virtual DOM에 반영시킨 후 실제 DOM을 변경 시킨다.
  • <div id="root"></div> 은 ‘root’ DOM node라고 부르며 보통 하나의 root DOM node를 가진다. id 값을 root라고 쓰는 것은 표준 규칙이다.

 

render가 하는 일은 무엇일까요?

  • 즉 render()는 Virtual DOM을 생성해서 이전의 요소들과 비교 후 화면은 업데이트 시킨다.

 

React는 들어본 것 같은데 react-dom은 무엇일까요?

  • ReactDOM은 Virtual DOM에서 HTML을 생성하는데 필요한 라이브러이다.
  • ReactDOM은 React Element를 브라우저에 렌더링 하는데 필용한 모든 도구들을 가지고 있다.

 

JSX와 표현식은 같을까요?

  • JSX는 표현식이므로 JavaScript 객체로 인식된다.
  • 표현식으로 인식이 되므로 변수에 할당 할 수 있고, if문 안에 사용할 수 있으며, 함수의 반환값으로 사용된다.
  • JSX 내부에서는 문을 사용할 수 없다. 왜냐 값이 아니기 때문이다. 그리고 삼항연사자는 표현식이기 때문에 JSX 내부에서 사용할 수 있다.

 

JSX와 React.createElement()는 무슨 관계일까요?

  • JSX는 컴파일 후 React.createElement()의 결과로 생성된 값과 같은 형태로 바뀐다.

 

document.createElement()와 다른 점은 무엇일까요?

// document.createElement
let element = document.createElement(tagName[, options]);

// React.createElement
let element = React.createElement(component, props, ...children)
  • 인자 값과 작성 방식이 다르다.

document.createElement

  • DOM 요소를 반환한다.(div, span, ...)

React.createElement

  • DOM 요소를 나타내는 객체를 반환한다.
const element = React.createElement("h1");

{
	type: 'h1',
	props: {}
}
  • DOM 요소 자체가 아닌 객체를 반환하는 이유는 React가 가상 DOM을 사용하기 때문이다. 가상 돔은 UI의 표현이 메모리에 유지되고 실제 DOM에 반영된다.

JSX 이해하기 - React

 

JSX 이해하기 – React

A JavaScript library for building user interfaces

ko.reactjs.org

React Tutorial

 

React Tutorial App

 

react-tutorial.app

[React.js] JSX와 XSS(Cross Site Scripting) 공격

 

[React.js] JSX와 XSS(Cross Site Scripting) 공격

JSX 마크업과 UI 로직을 둘 다 포함하여 개발을 할 수 있다. 익숙한 문법으로 협업에 용이하다. 컴포넌트별로 분류하여 유지보수를 쉽게 할 수 있다. 속성 정의는 따옴표('')를 이용해 문자열 리터

onlydev.tistory.com

ZeroCho Blog

 

https://www.zerocho.com/category/HTML&DOM/post/587f50b1308ed50018a00d51

 

www.zerocho.com

 

'React.js' 카테고리의 다른 글

[React] Key  (0) 2022.06.15
[React] VirtualDOM  (0) 2022.06.15
[React] ReactDOM.createRoot는 뭘까?  (0) 2022.04.26
[ReactJS]리액트 react-router-dom / HashRouter, BrowserRouter, Route, Switch, Link  (0) 2021.02.10
[ReactJS]노마드코더 리액트 기초-04. State  (0) 2021.01.21
    'React.js' 카테고리의 다른 글
    • [React] Key
    • [React] VirtualDOM
    • [React] ReactDOM.createRoot는 뭘까?
    • [ReactJS]리액트 react-router-dom / HashRouter, BrowserRouter, Route, Switch, Link
    FE코크
    FE코크
    공부한 내용을 적는 블로그

    티스토리툴바