본문 바로가기
React

2. JSX란?

by bammbii 2023. 8. 2.

JSX (JavaScript XML) 란?

  • Javascript에 XML을 추가 확장한 문법
  • 리액트로 프로젝트 개발할 때 사용되므로 공식적인 자바스크립트 문법은 아님
  • 브라우저에서 실행하기 전에 바벨을 사용해서 일반 자바스크립트 형태의 코드로 변환
  • 하나의 파일에 자바스크립트와 HTML을 동시에 작성하여 편리

 

예시

// 실제 작성할 JSX 예시
function App() {
	return (
      <h1>Hello, GodDaeHee!</h1>
    );
}

// 위와 같이 작성하면, 바벨이 다음과 같이 자바스크립트로 해석하여 준다.
function App() {
	return React.createElement("h1", null, "Hello, GodDaeHee!");

 

 

문법

1. 반드시 부모 요소 하나가 감싸는 형태
( Virtual DOM에서 컴포넌트 변화를 감지할 때 효율적으로 비교하기 위해 컴포넌트 내부는 하나의 DOM 트리 구조여야 함)

 

에러 예시

// Fail to compile
// parsing error : adjacent JSX elements be wrapped in an enclosing tag
// Did you want a JSX fragment <>...</>?
function App() {
	return (
		<div>Hello</div>
		<div>GodDaeHee!</div>
	);
}

정상 작동 예시

// div를 사용 하였기 때문에 스타일 적용시 작성한 코드를 div로 한번 더 감쌌다는 부분을 고려해야 한다.
function App() {
	return (
		<div>
			<div>Hello</div>
			<div>GodDaeHee!</div>
		</div>
	);
}

2. 자바스크립트 표현식

( JSX 내에서 자바스크립트 표현식을 쓰려면 코드를 {}로 감싸주면 됨 )

 

예시

function App() {
	const name = 'GodDaeHee';
	return (
		<div>
			<div>Hello</div>
			<div>{name}!</div>
		</div>
	);
}

 

3. if문 (for문) 대신 삼항 연산자 (조건부 연산자) 사용

  • if문과 for문은 자바스크립트 표현식이 아니기 때문에 JSX 내부에 사용 불가능
  • 때문에 JSX 주변 코드에서 if문을 사용하거나 {}안에서 삼항연산자 (조건부 연산자) 사용

4. React DOM은 HTML Attribute 이름 대신 camelCase 프로퍼티 명명 규칙을 사용

  • 카멜 표기법 사용 (font-size → fontSize)
  • class 대신 className을 사용

5. JSX 내에서 주석 사용 방법

  • {/*...*/ }으로 사용
  • 시작 태그 여러줄 작성 시, ' // '  사용 가능

'React' 카테고리의 다른 글

0. 개발환경  (0) 2023.08.02
1. 리액트 시작하기 - 주요 특징  (0) 2023.08.02