리액트 JSX

jjong_gang·2021년 12월 16일
0

리액트 공식문서

목록 보기
2/3
post-thumbnail
post-custom-banner

JSX

JSX는 자바스크립트를 확장한 문법입니다.
JSX는 React '엘리먼트'를 생성합니다.

const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;

ReactDOM.render(
  element,
  document.getElementById('root')
);

name이라는 변수를 선언하고, 중괄호로 감싸 JSX 안에 사용하였습니다.

아래의 코드와 같이, JSX의 중괄호 안에는 JavaScript 표현식을 넣을 수 있습니다.
함수 호출의 결과인 formatName(user)를 h1 엘리먼트에 포함합니다.

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);

ReactDOM.render(
  element,
  document.getElementById('root')
);

위의 코드를 실행시킨 결과는 다음과 같습니다.

JSX는 표현식

표현식이란, 값을 반환하는 식 또는 코드입니다.
컴파일이 끝나면, JSX표현식은 JavaScript 객체로 인식됩니다.

JSX로 자식 정의

const element = <img src={user.avatarUrl} />;
const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);

JSX 태그는 자식을 포함할 수 있습니다.

JSX는 객체를 표현합니다

Babel은 JSX를 React.createElement() 호출로 컴파일합니다.

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

위의 두 코드는 동일합니다.
다만, 2번 코드는 React.createElement()를 사용하여, 버그 없는 코드를 작성할 수 있도록 도와줍니다.

2번 코드는 다음과 같은 객체를 생성합니다.

const element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Hello, world!'
  }
};

이 객체를 읽어서, DOM을 구성하고, 최신상태로 유지하는 데 사용한다.

post-custom-banner

0개의 댓글