출처: https://www.codecademy.com

JSX 랜더링하기

JSX 랜더링이란? JSX 코드 표현을 화면에 나타내기 위한 작업

ReactDOM.render()

    import React from 'react';
    import ReactDOM from 'react-dom';

    ReactDOM.render(<h1>Hello world</h1>, document.getElementById('app'));

ReactDOM은 자바스크립트 라이브러리의 React-specific method 이며, ReactDOM.render()는 가장 보편적인 JSX 랜더링 메서드이다.

위 코드에서 <h1>Hello world</h1> 는 ReactDOM.render() 의 첫번째 argument 로써, 이 부분이 화면에 보여지게 된다.

ReactDOM.render() 메서드의 첫번째 argument 는 JSX 코드여야 한다.

document.getElementById('app') 는 ReactDOM.render() 의 두번째 argument 로써, 리액트 애플리케이션의 위치를 결정한다고 보면 된다.

즉, HTML에 들어갈 위치인 id, 또는 클래스 이름을 두번째 인자에 입력한다.

결과적으로 위 JSX 코드를 html 로 표현해보면 아래 코드와 동일한 결과를 보여준다.

    <main id="app">
      <h1>Hello world</h1>
    </main>

<h1>Hello world</h1>id="app" 에 해당하는 부분에 들어가게 된다.



ReactDOM.render() 로 변수 넘기기

ReactDOM.render() 의 첫번째 argument 로 JSX로 선언된 변수를 넘길 수 있다.

    import React from 'react';
    import ReactDOM from 'react-dom';
    
    // Write code here:
    const myList = ( 
        <ul>
            <li> list1 </li>
            <li> list2 </li>        
        </ul>
    );
    
    ReactDOM.render(myList, document.getElementById('app'));

위 JSX 코드를 html 로 표현해보면,

    <main id="app">
      <ul>
          <li> list1 </li>
          <li> list2 </li>        
      </ul>
    </main>



ReactDOM.render()의 특별한 점은

기존 코드에서 변화된 부분만 update 한다는 점이다.

만약, 똑같은 코드를 두번 랜더링하려고 한다면 두번째 랜더링 작업은 아예 이루어 지지 않는다.

    const hello = <h1>Hello world</h1>;
    
    // This will add "Hello world" to the screen:    
    ReactDOM.render(hello, document.getElementById('app'));
    
    // This won't do anything at all:    
    ReactDOM.render(hello, document.getElementById('app'));

이것과 관련해서 더 알고싶다면, virtual DOM 의 관하여 살펴보시기 바란다.

https://www.codecademy.com/articles/react-virtual-dom