React Main Concepts

less than 1 minute read

REACT MAIN CONCEPTS

JSX

JSX는 javascript xml로 javascript를 확장한 문법이다.

Why?

React에서 마크업과 로직을 둘 다포함하기 위해서 사용되곤 한다.

컴포넌트라고 부르는 느슨하게 연결된 유닛으로 관심사를 분리해서 React 엘리먼트를 생성하여 UI가 어떻게 생겨야 하는지 설명한다.

표현식

중괄호 안에 유효한 모든 javascript 표현식을 넣을 수 있다.

자동 세미콜론 삽입을 피하기 위해 괄호로 묶는다.

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

jsx도 표현식이기 때문에 변수에 할당, 반환 등 가능하다.

function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!</h1>;
  }
  return <h1>Hello, Stranger.</h1>;
}

속성 정의

따옴표(문자열 값에 사용) 또는 중괄호(표현식에 사용) 중 하나만 사용한다.

속성에 따옴표를 이용해 문자열 리터럴을 정의할 수 있다.

const element = <div tabIndex="0"></div>;

중괄호를 사용하여 어트리뷰트에 JavaScript 표현식을 삽입할 수 있다.

const element = <img src={user.avatarUrl}></img>;

주입 공격 방지

기본적으로 React Dom은 JSX에 삽입된 모든 값을 렌더링 하기 전에 문자열로 변환되어 이스케이프하므로 XSS(cross-site-scripting) 공격을 방지할 수 있다.

객체 표현

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

아래 두 예시는 동일하다.

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

이후에 몇가지 검사를 수행해서 React 엘리먼트 객체를 생성한다.

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

Updated: