만들면서 배우는 리액트 튜토리얼 - 2.JSX

by - August 15, 2018

Image result for jsx

1.     JSX

JSX 리액트 컴포넌트를 만들 사용하는 언어이다.

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Welcome to React</h1>
        </header>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
      </div>
    );
  }
}

export default App;
JSX 예시

위의 사진이 기본적인 JSX의 예시이다.


1.1. render()

render(): 컴포넌트가 나에게 보여주는

리액트에서 모든 컴포넌트는 render function 갖고 있어야 하고 이를 return해주어야 한다.



1.2. JSX 실행과정

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';

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


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json">
    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
    <title>Movie App</title>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root">
      All your components here
    </div>
  </body>
</html>
Index.html



import React, { Component } from 'react';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        Hello!
      </div>
    );
  }
}

export default App;

app.js


리액트의 실행과정을 알아보면

터미널에서 yarn start 하면 리액트는 JS 모든 코드를 가져와서 html 파일에 담는다.

파일이 실제로 실행되는 파일이고 이 파일이 바로 public 폴더에 있는 index.html 파일이다.


index.html파일은 index.js파일을 변경함으로써 수정할 있는데

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

위 코드에서 index.js ReactDom App이라는 1개의 컴포넌트를

document(index.html) 안에 있는 id root element를 찾아서  출력한다.

element index.html파일에 <div id=”root”>라는 형태로 숨어있다.

<div id="root">
    All your components here
</div>

App.js 위에서 출력하는 1개의 컴포넌트이다.<App />).


정리하자면 index.js내의 ReactDOM DOM JSX 연결하는 

중개자 역할을 한다고 보면 된다.

1.3. React vs ReactDOM

React: UI Library
React DOM(Document Object Model): 리액트를 웹사이트에 출력(render)하는 도와주는 모델

1.4. JAX 샘플 프로젝트 작성

import React, { Component } from 'react';
import './Movie.css'; // 선택사항

class Movie extends Component {
  render() {
    return (
      <div>
        <MoviePoster/>
        <h1>hello this is a movie</h1>
      </div>
    )
  }
}

class MoviePoster extends Component {
  render() {
    return (
      <img src="https://m.media-amazon.com/images/M/MV5BMTM0NjQ4OTgyNV5BMl5BanBnXkFtZTcwOTU2MzQ4Nw@@._V1_.jpg"/>
    )
  }
}

export default Movie
Movie.js


import React, { Component } from 'react';
import './App.css';
import Movie from './Movie';

class App extends Component {
  render() {
    return (
      <div className="App">
        <Movie />
        <Movie />
      </div>
    );
  }
}

export default App;
App.js

1.5. JAX 정리

기본적으로 리액트는 컴포넌트 안에 작은 컴포넌트를 집어 넣는 방식이다.

위의 샘플 프로젝트에서는 App 컴포넌트가 최상위 컴포넌트이고 

안에 Movie라는 작은 컴포넌트가 들어 있고

작은 컴포넌트 안에 MoviePoster라는  작은 컴포넌트가 들어가 있는 형식이다.


즉, 리액트의 모든 것은 컴포넌트로 되어있고


모든 컴포넌트는 무조건 Render하고 return해야 한다는 것을 기억하자.

You May Also Like

0 comments