정리/React

[처음 만난 리액트] section 4. Rendering Elements

민발자 2024. 3. 24. 16:08
728x90

 

1. Elements의 정의와 생김새

📌 Elements란?

리액트 앱을 구성하는 가장 작은 블록들

화면에서 보이는 것들을 기술

🔎 React element와 DOM element의 차이

실제 브라우저의 DOM에 존재하는 element가 DOM element

리액트의 virtual DOM에 존재하는 element가 리액트 element

즉 리액트 element는 DOM element의 가상 표현

DOM element는 리액트 element에 비해 많은 정보를 가지고 있어 상대적으로 크고 무겁다

🔎 React element

const element = <h1>Hello</h1>;

React.createElement 함수 호출  자바스크립트 객체 생성 = 리액트 element

리액트는 이 element를 이용해 실제 화면에서 보게 되는 DOM element를 생성

 

📌 Elements의 생김새

리액트 element는 자바스크립트 객체 형태로 존재

컴포넌트 유형과 속성 및 내부의 모든 자식에 대한 정보를 포함하고 있는 일반적인 자바스크립트 객체

불변성을 가지고 있음

왼) element 의 자바스크립트 객체 오) 랜더링된 element

🔎 createElement 파라미터

type : HTML 태그이름이 문자열로 들어가거나 또 다른 리액트 컴포넌트가 들어감

props : element의 클래스나 스타일 같은 속성

children : 자식 element

 

2. Elements의 특징 및 렌더링하기

📌 React Element의 특징

🔎 불변성(Immutable)

element 생성 후에는 자식이나 속성을 변경할 수 없음

변경된 element를 보여주기 위에선 기존 element를 변경하는 것이 아닌 새로운 element를 생성

 

📌 Elements 렌더링 하기

🔎 Root DOM Node

<div id="root"></div>

모든 리액트 element들이 렌더링 되는 루트 돔노드

 

🔎 렌더링 과정

const element = <h1>안녕 리액트</h1>;
ReactDOM.render(element, document.getElementById('root'));

element를 생성하고 루트 돔 노드에 렌더링 → ReactDOM.render() 사용

첫 번째 파라미터(리액트 element - virtual DOM에 존재)를 두 번째 파라미터(DOM element)에 렌더링

렌더링 되는 과정은 virtual DOM에서 실제 DOM으로 이동하는 것

 

🔎 렌더링 된 Elements를 업데이트하기

리액트 element의 불변성으로 인해 업데이트하기 위해선 새로 생성해야 함

 

 

3. 시계 만들기

📃 Clock.jsx

import React from 'react';

function Clock(props){
  return(
    <div>
      <h3>안녕 리액트</h3>
      <h5>현재 시간 : {new Date().toLocaleTimeString()}</h5>
    </div>
  );
}

export default Clock;

 

📃 index.js

const root = ReactDOM.createRoot(document.getElementById('root'));

setInterval(() => {
  root.render(
    <React.StrictMode>
      <Clock />
    </React.StrictMode>
  );
}, 1000);

reportWebVitals();

1초마다 Clock 컴포넌트를 렌더링

 

📊 결과

 

 

 

 

 

728x90