React

[React] JSX

담쏙 2022. 8. 7. 16:45
728x90

JSX란?

  • 자바스크립트의 확장 문법
  • 바벨을 통해 일반 자바스크립트 형태의 코드로 변환됨

 

JSX 코드

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

Javascript로 변환된 코드

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

 

JSX의 장점

  • 보기 쉽고 익숙하다
  • HTML 태그를 사용할 수 있을 뿐 아니라 컴포넌트도 JSX 안에서 작성할 수 있다

 

JSX 문법

  • vue.js 처럼 요소들을 부모 요소 하나로 감싸주어야 함
    • Virtual DOM에서 컴포넌트 변화를 감지해 낼 때 효율적으로 비교할 수 있도록 컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야 하기 때문
    • 보통은 <div></div> 로 감싸나, 리액트 v16 이상부터는 <Fragment></Fragment> 로 감싸줄 수 있다
      이때, Fragment는 태그명 없이 <></>로 사용할 수 있다
  • JSX 내부에서 { } 를 이용해 자바 스크립트 표현식을 사용할 수 있음
function App() {
	const name = "홍길동";
	return (
    	<>
        	<h1> {name} 님 안녕하세요 </h1>
        </>
    );
}
  • JSX 내부에서는 if 문을 사용할 수 없음
    • JSX 밖에서 if 문을 사용해 사전에 값을 렌더링 하거나, if문에 따라 다르게 JSX를 리턴하는 작업 가능
    • JSX 안에서 사용하기 위해서는 삼항연산자 ( 조건 ? 참 일때 값 : 거짓일 때 값 ) 을 사용
  • AND 연산자(&&)를 이용한 조건부 렌더링 가능
    • 조건 && JSX 문 을 이용하면 조건이 참일 때만 JSX 문이 화면에 출력
    • 예외적으로 조건이 0일 경우는 화면에 나타남
  • OR 연산자(||) 를 이용해 undefined 값일 때 대체할 문구 지정 가능
  • 인라인 스타일링이 필요할 경우, 카멜 표기법으로 작성
function App() {
	const style = {
    	backgroundColor: 'black',
        color: 'white',
        fotsSize: 14px'
    };
    return <div style = {style}> hello </div>;
}
function App(){
	return (
    	<div
         style={{
         	backgroundColor: 'black',
            color: 'white',
            fontSize: 14px
           }}
        >
        	hello
        </div>
    );
}
  • class 속성 이용 시, class가 아닌 className 으로 지정해주어야 함
  • HTML과 다르게 닫는 태그가 꼭 있어야 함  
  • 주석은 {/* */} 와 같은 형식으로 작성 하며, 시작 태그가 여러줄일 경우 그 내부에서 // 와 같은 형태의 주석을 사용할 수 있음

'React' 카테고리의 다른 글

번들러(Bundler)  (0) 2022.08.07
[React] MacOS zsh 터미널에서 초기 환경 설정  (0) 2022.08.06
[React] 리액트 시작하기  (0) 2022.08.06