--- id: jsx-in-depth-ko-KR title: JSX 깊이보기 permalink: jsx-in-depth-ko-KR.html prev: displaying-data-ko-KR.html next: jsx-spread-ko-KR.html --- [JSX](http://facebook.github.io/jsx/)는 XML과 비슷한 JavaScript문법 확장입니다. React에서 변환되는 간단한 JSX 구문을 사용하실 수 있습니다. ## 왜 JSX인가? React를 위해 꼭 JSX를 사용할 필요는 없고, 그냥 일반 JS를 사용할 수도 있습니만 JSX를 사용하기를 추천합니다. 왜냐하면, 어트리뷰트를 가진 트리 구조로 정의할 수 있는 간결하고 익숙한 문법이기 때문입니다. 이것은 디자이너 같은 케쥬얼 개발자에게 더 익숙합니다. XML에는 여닫는 태그의 장점이 있습니다. 태그는 큰 트리일 때 함수 호출이나 객체 리터럴보다 읽기 쉬워 집니다. JSX는 JavaScript의 시맨틱을 변경하지 않습니다. ## HTML 태그 vs. React 컴포넌트 React는 렌더 HTML 태그(문자열)이나 React 컴포넌트(클래스)일 수 있습니다. HTML 태그를 렌더하려면, 그냥 JSX에 소문자 태그를 사용하세요. ```javascript var myDivElement =
; React.render(myDivElement, document.body); ``` React 컴포넌트를 렌더하려면, 대문자로 시작하는 로컬 변수를 만드세요. ```javascript var MyComponent = React.createClass({/*...*/}); var myElement = ; React.render(myElement, document.body); ``` React JSX는 대소문자를 로컬 컴포넌트 클래스와 HTML 태그를 구별하는 컨벤션으로 사용합니다. > 주의: > > JSX가 JavaScript기 때문에, `class`, `for`같은 식별자는 XML 어트리뷰트 이름으로 > 권장하지 않습니다. 대신, React DOM 컴포넌트는 각각 `className`, `htmlFor`같은 > DOM 프로퍼티 이름을 기대합니다. ## 변환 React JSX는 XML같은 문법에서 네이티브 JavaScript로 변환됩니다. XML 엘리먼트, 어트리뷰트, 자식은 `React.createElement`에 넘겨지는 인자로 변환됩니다. ```javascript var Nav; // 입력 (JSX): var app =