[리액트를다루는기술] JSX란?

Sungmin kim·2022년 10월 24일
0

react

목록 보기
1/2
post-thumbnail

'리액트를 다루는 기술' 도서에서 축약한 내용입니다.

JSX 특징

  • JSX는 자바스크립트의 확장 문법으로 해당 형식으로 작성된 코드는 브라우저에서 실행되거전에 코드가 번들링되는 과정에서 바벨을 사용하여 일반 자바스크립트 형태의 코드로 변환됨.
  • 공식적으로 자바스크립트 문업이 아님. 바벨에서 여러 문법을 지원할 수 있도록 preset 및 plugin을 설정. 바벨을 통해 개발자들이 임의로 만든 문법, 혹은 차기 자바스크립트의 문법들을 사용할 수 있음.
  • 장점
    • 보기 쉽고 익숙하다 : HTML코드를 작성하는 것과 비슷
    • 높은 활용도 : app.js에서 root.rendet함수에 jsx 코드를 인자로 넣어 보여주고 싶은 컴포넌트 화면을 보여줄 수 있음.
    app.js에서 React.StrictMode 컴포넌트는 리액트 프로젝트에서 앞으로 사라질 레거시 기능을 사용할 때 경고를 주고, 앞으로 미래의 리액트 버전에 도입될 기능들이 정상적으로 호환될 수 있도록 유도하는 개발환경에서만 활성화되는 디버깅용 컴포넌트.

JSX 사용법

  • 컴포넌트에 여러 요소가 있다면 반드시 부모 요소로 감싸주어야하며, 부모요소가 꼭 <div>가 아니여도 사용 가능.
    //Fragment 기본 표현 방식
    return(
    	<Fragment>
    		<h1></h1>
    		<h2></h2>
    	<Fragment>
    );
    

    //Fragment 약식 표현 방식
    return(
    <>
    <h1></h1>
    <h2></h2>
    </>
    );

    react 모듈에 들어 있는 Fragment라는 컴포넌트를 추가로 불러옴.

  • 자바스크립트 표현
    function App(){
    	const name = '리액트';
    	return (
    		<>
    			<h1>{name} 안녕!</h1>
    			<h2>잘 작동하니?</h2>
    		</>
    	);
    }
    

    export default App;

  • if 문 대신 조건부 연산자
    return(
    	<div>
    		{name === '리액트' ?(
    			<h1>리액트입니다.</h1>
    		) : (
    			<h2>리액트가 아닙니다.</h2>
    		)}
    	</div>
    );

    jsx 내부의 자바스크립트 표현식에서 if문을 사용 불가. 이를 대신하여 삼항연산자(조건부연산자) 사용.

  • AND 연산자를 사용한 조건부 랜더링
    return <div>{name === '리액트' ? <h1>리액트입니다.</h1> : null}</div
    

    -> return <div>{name === '리액트' && <h1>리액트입니다.</h1>}</div>&

    null을 랜더링하면 아무 것도 보여주지 않으며, 리액트에서 false 랜더링 할때는 아무것도 null과 마찬가지로 아무 것도 보여주지 않기에 &&연산자로 조건부 랜더링이 가능한 것.

    const number=0;
    return number && <div>내용</div>

    이때 falsy(?)한 값인 0은 예외적으로 화면에 나타남.

    jsx에서 한줄로 표현할 수 있는 경우 괄호로 감싸지 않아도 됨. jsx를 괄호로 감싸는 것은 필수 사항이 아님.

  • undefined를 랜더링하지 않기
    function App(){
    	const name = undefined;
    	return name; 
    }
    

    //에러 발생

    어떤 값이 undefined일 수 있다면 or(||)연산자를 사용하여 오류 방지.

    const name = undefined;
    return name || '값이 undefinend입니다';

    jsx 내부에서 undefined를 랜더링하는 방법도 있음.

    function App(){
    	const name = undefined;
    	return <div>{name}</div>;
    }

    값이 undefined일 경우 보여 주고 싶은 문고 지정 가능.

    function App(){
    	const name = undefined;
    	return <div>{name || '리액트'}</div>;
    }

  • DOM 요소에 스타일 지정시 문자형태가 아닌 객체형태로 넣어야함. 그래서 style 요소이름 사이 ‘-’ 대신 카멜 표기법을 사용함.
    //객체를 미리선언 했을때
    const style ={
    		backgroundColor:'red',
    		width: 16//단위 생략시 px로 지정
    }
    

    //미리 선언하지 않고 바로 지정할때
    return(
    <div style={{
    backgroundColor:'red',
    width: 16//단위 생략시 px로 지정
    }}>
    </div>
    )

  • self-closing 태그 : input,br등의 태그를 html과 달리 꼭 닫아줘야하는 것을 뜻함.

profile
Keep Trying & Enjoing

0개의 댓글