[React] JSX

dnjstjt12·2024년 12월 20일

JSX
JSX(Javascript XML)은 자바스크립트에 XML을 확장한 문법이다.

브라우저가 실행되기 전에 Babel을 사용하여 자바스크립트 형태의 코드로 변환이 된다.

function App(){
	return(
    	<div>
      		<h1>Hello World</h1>
      	</div>
    );
}

이 코드는 다음과 같이 변환된다.

function App(){
	return React.createElement("div",null,React.createElement("h1",null,"Hello World"));
}

문법

1 자바스크립트 표현식을 { }로 감싸서 사용할 수 있다.

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

2 JSX는 여러 요소를 포함할 수 있지만 반드시 하나의 부모 요소로 감싸야 한다.

다음코드는 부모요소로 감싸지 않아서 에러가 나올 것이다.

function App(){
    return(
      	<h1>Hello World</h1>
 		<p>jsx</p>
    );
}

그래서 다음과 같이 고쳐야한다.

function App(){
    return(
    	<div>
      		<h1>Hello World</h1>
      		<p>jsx</p>
      	</div>
    );
}

3 조건부 연산자를 사용하여 조건식을 표현해야 한다.

if문은 자바스크립트 표현식이 아니기 때문에 JSX에서 사용할 수 없다. 그래서 if문을 JSX 외부에서 사용하여 사전에 처리하여 사용하거나, JSX 내부에서 === 조건부 연산자를 이용해 사용할 수 있다.

//JSX 외부에서 if문을 사용해 사전에 처리
function App(){
	const name = 'react'
    let A = '';
    
  	if(A==='react') A = <h1> Hello react</h1>;
    else A = <p>jsx</p>;
      
  	return(
    	<div>
      		{A}
    	</div>
  	);
}
//JSX 내부에서 조건부 연산자를 이용
function App(){
	const name = 'react'
  	return(
    	<div>
      		{name === 'react'?(
             	<h1>Hello World</h1>
            ):(
             	<p>jsx</p>
    		)}
    	</div>
  	);
}

4 DOM 요소에 스타일을 적용할 때 문자열 형태로 넣는 것이 아니라 객체 형태로 넣어주어야한다. 또한 스타일 이름은 camelCase로 작성해야 한다.

function App(){
  	const style = {
    	backgroundColor: 'black',
      	color: 'white',
      	fontSize: '20'
    };
  	return(
    	<div style={style}>
      		Hello world
    	</div>
  	);
}

5 JSX에서 HTML 속성을 작성하듯이 속성을 추가할 수 있지만 JavaScript 스타일로 작성해야 하는 경우가 있다. ex)class 대신 className, onclick 대신 onClick

6 JSX내부에서 주석을 사용할 때는 {/* */}형태로 작성해야한다.

function App(){
	const name = 'react'
  	return(
    	<div>
      		{/* 주석 */}
    	</div>
  	);
}
profile
안녕하세요!

0개의 댓글