JSX는 자바스크립트의 확장 문법
이며, XML과 매우 비슷하게 생겼습니다.
JSX는 리액트로 프로젝트를 개발할 때 사용되므로 공식적인 자바스크립트 문법은 아닙니다.
확장문법이기 때문에 babel을 사용하여 일반 자바스크립트 형태로 코드를 변환하여 사용합니다.
why? => 최신 자바스크립트 문법은 구버전 웹 브라우저에서는 실행되지 않기 때문입니다.
JSX는 하나의 파일에 자바스크립트와 HTML을 동시에 작성하여 편리합니다.
JSX문법으로 사용하면 HTML코드를 작성하는것과 비슷하기 때문에 가독성이 높고 작성하기도 쉽게 느껴집니다.
아래의 사진은 아주 짧은 코드임에도 Js로 작성한 코드는 복잡해 보이는 반면 JSX문법을 사용한 코드는 가독성이 아주 좋습니다. 만약 코드가 길어진다면 엄청나게 차이가 나타날 것 입니다.
JSX문법을 사용하면 div, span, p 등 HTML 태그를 사용할 수 있고, 앞으로 만들어볼 컴포넌트 또한 JSX안에서 작성할 수 있습니다. 컴포넌트를 HTML 태그를 사용하듯이 작성하기 때문에 아주 높은 활용도를 가지고 있습니다.
아래의 사진은 create-react-app을 통해 만들경우 기본적으로 만들어져 있는 index.js파일입니다. 사진에서 보면 React.StrickMode, App 컴포넌트를 일반 HTML 태그를 사용하듯이 사용합니다
컴포넌트에 여러 요소가 있다면 반드시 부모 요소 하나로 감싸줘야 합니다.
why? ⇒ Virtual DOM에서 컴포넌트 변화에 감지해 낼 때 효울적으로 비교할 수 있도록 컴포넌트 내부는 하나의 DOM트리 구조로 이루어져야 하는 규칙 때문입니다.
부모 요소 하나로 감싸는 경우 div 또는 컴포넌트로 감싸도 되지만, 아무 의미없이 불필요하게 div를 사용하면 좋지 않다고 생각합니다. 따라서 Fragment라는 컴포넌트로 감쌀 수 있으며 간편하게는 <></>
로 사용할 수 있습니다.
삼항연산자 : 조건 (삼항) 연산자는 JavaScript에서 세 개의 피연산자를 받는 유일한 연산자입니다. 앞에서부터 조건문, 물음표( ? ), 조건문이 참(truthy)일 경우 실행할 표현식, 콜론( : ), 조건문이 거짓(falsy)일 경우 실행할 표현식이 배치됩니다.
즉 "조건 ? a : b" 인 식에서 조건이 참이면 a 코드 실행, 조건이 거짓이면 b코드 실행
Javascript MDN 참고