# JSX

자바스크립트를 통해 HTML을 작성하는 확장문법

# JSX의 규칙

# 반드시 하나의 엘리먼트로 감싸야한다.

이때 Fragment를 이용하면 된다.

<Fragment></Fragment, <React.Fragment></React.Fragment>, <> </> 로 elements들을 감싸주면 된다.

# 내부에 자바스크립트 코드는 중괄호로 감쌀 수 있다.

아래의 단순한 JSX 사용을 참고하자

# if는 삼항연산자로만 작성 가능하다

return <div>{props.id ? props.newTag : <div>{props.name}</div>}</div>;

# class는 className으로 적어주자.

<>
isGookWork
<Fram className="mainContainer">

# 단순한 JSX 사용

const name = "jeong";
const element = <h1>Hello, {name}</h1>;

render(element);

태그가 비어있다면 XML 처럼 />를 이용하여 바로 닫아주자

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

자식 태그를 가질 수 있다.

const element = (
  <div>
    <h1>Hello world</h1>
    <h2>nice to meet you</h2>
  </div>
);

JSX에 삽입된 모든 값은 렌더링하기 전에 이스케이프 하기때문에, 명시적으로 작성되지 않은 내용은 주입되지 않는다. XSS(cross-site-scripting) 공격을 방지할 수 있다.

# JSX는 객체를 표현한다.

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

const element = <h1 className="greeting">Hello, world!</h1>;

위 아래는 같다.

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

React.createElement()는 버그가 없는 코드를 작성하는 데 도움이 되도록 몇 가지 검사를 수행 다음과 같은 객체를 생성한다.

// 주의: 다음 구조는 단순화되었습니다
const element = {
  type: "h1",
  props: {
    className: "greeting",
    children: "Hello, world!",
  },
};
© Devlog from jeong