React - 1. JSX

Carminido·2020년 2월 11일
0

HangOutWithReact

목록 보기
1/12

JSX

const greeting = <div>Hello?</div>;

It is called JSX, and it is a syntax extension to JavaScript.

HTML과 비슷하게 생긴 이것은, JSX라고 하는 자바스크립트의 확장버전입니다. 리액트에서는 자바스크립트에 써야하는 그 모든 element를 쓰는 대신에 JSX를 사용합니다. 이게 도대체 어찌 가능한 것일까요?

우리가 이렇게 작성한 JSX 파일을, 리액트는 원래의 정규 자바스크립트 문법으로 컴파일 한다고 합니다.

JSX Element

우리는 그동안 태그가 들어가는 html 문법은 HTML파일에, 자바스크립트에서는 돔으로 표현을 해왔습니다.
JSX 에서는 HTML 문법을 JavaScript 코드 내부에 써주면 됩니다.
변수에 저장할 수도, 함수의 인자로 넣을 수도 있으니 자바스크립트 때에 비교하면 상상하기도 힘든 자유로움이죠? ( 리액트는 참 유도리 있는 것 같습니다.)

const greeting = <div>Hello?</div>;

const MyFavorite = {
  food: <li>김치찌개</li>
  animal: <li>Cat</li>,
  hobby: <li>Mossing</li>
}

JSX attribute

우리는 태그에 attribute, 속성을 주고 싶을 때는 항상 ""을 쓸 것입니다.

<div tabIndex="-1" />      // Just like node.tabIndex DOM API
<div className="Button" /> // Just like node.className DOM API
<input readOnly={true} />  // Just like node.readOnly DOM API

리액트에서 보여준 예시 인데요, 보면 자바스크립트에서는 클래스를 지정할 때 class 로 했던 것과 달리 JSX 에서는 className 으로 표현했습니다. 클래스를 스스로 만들 수도 있다고 합니다.
https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html
이 부분을 보면 직접 속성을 만드는 예시들이 나와있으니 참고하면 좋을 것 같습니다.

또 우리가 자바스크립트에서 썼던 것처럼, CamelCase를 쓴다고 합니다.

Self-Closing Tag

우리는 항상 태그를 쓸 때면 몇몇 경우를 제외하고는 오픈 태그와 클로징 태그가 있었습니다. 하지만 역시 유도리 있는 언어 답게 어떤 태그라고 하더라도 self closing tag가 가능하다고 합니다.

=

그러면 만약 원래 하나인 태그는 어떨까요?
과 같은 하나만 쓰는 경우는 과 같이 꼭 /로 끝을 내주어야 한다고 합니다.
마냥 다 괜찮다고 할 줄 알았는데 이건 또 나름 통일성이 있네요.

Nested JSX```

코드를 입력하세요


1. 소괄호로 감싸기
중첩된 요소를 만들려면 () 소괄호로 감싸야 합니다.

```jsx
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')
);
  1. 항상 하나의 태그로 시작
const start = (
<div>
    <p>always</p>
    <p>one</p>
</div>
);

Rendering

랜더링하다. 뭔가 뽑아내거나 출력하는 느낌이 들지 않나요?
우리가 작성한 html 코드 혹은 React 요소들이 우리가 볼 수 있도록 만들어지는 것을 rendering 랜더링 한다고 합니다.

React 요소가 DOM node에 추가 되기 위해서 필요한 함수!
ReactDOM.render
우리가 만든걸 보여줘!!! 느낌이네요

ReactDOM.render

ReactDOM.render(  // 내가 쓴 아래의 html을 id가 root인 컨테이너에 뿌려줘!!
  <h1>It's time to REACTTT</h1>,
  document.getElementById('root')
);

첫 번째 인자에는 JSX로 React 요소
두 번째 인자는 렌더링하고 싶은 container(부모요소)입니다.

ReactDOM.render(<App />, document.getElementById('root'));

보통은 App이라는 모든 것을 담아놓는 부모 or 부모 컴포넌트인 App을 이렇게 연결하는 것 같습니다.

profile
나는야 코린이 하지만 무럭무럭 자라고 있죠

0개의 댓글