본문 바로가기
WEB/react

element(엘리먼트)

by 일상코더 2023. 3. 4.

element(엘리먼트)

 

             - 엘리먼트는 React 앱의 가장 작은 단위 이다. 

             - 엘리먼트는 화면에 표시할 내용을 기술 한다.

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

 

       - 브라우저 DOM 엘리먼트와 달리 React 엘리먼트는 일반 객체(plain object)이고 쉽게 생성 가능하다.

       - React DOM은 React 엘리먼트와 일치하도록 DOM을 업데이트 한다.

 

 

DOM에 엘리먼트 렌더링 하기

   

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

 - HTML 파일 어딘가에 <div>가 있다고 가정

 - 이 안에 들어가는 모든 엘리먼트를 React DOM에서 관리하기 때문에 이것을 "루트(root)" DOM 노드라고 한다. 

 - React로 구현된 애플리케이션은 일반적으로 하나의 루트 DOM 노드가 있다. 

 - React를 기존 앱에 통합하려는 경우 원하는 만큼 많은 수의 독립된 루트 DOM 노드가 있을 수 있다. 

 - React 엘리먼트를 렌더링 하기 위해서는 우선 DOM 엘리먼트를 ReactDOM.createRoot() 에 전달 한다.

 - 그 후에 React 엘리먼트를 root.render()에 전달한다. 

 

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';


const root = ReactDOM.createRoot(document.getElementById('root'));
const element = <h1>Hello, world</h1>;
root.render(element);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

 

렌더링 된 엘리먼트 업데이트 하기

 

React 엘리먼트는 불변객체이다. 엘리먼트를 생성한 이후에는 해당 엘리먼트의 자식이나 속성을 변경할 수 없다.

 

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';


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

function tick(){
    const element = (
        <div>
            <h1>Hello, world!</h1>
            <h2>It is {new Date().toLocaleTimeString()}.</h2>
        </div>
    );
    root.render(element);
}

// 함수 안에 root.render를 선언해주고 
// setInterval 함수로 1초마다 root.render를 계속해서 호출 해주는 방법으로 업데이트가 가능하다
setInterval(tick, 1000);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'WEB > react' 카테고리의 다른 글

NPM( Node package manager) vs NPX  (0) 2023.04.05
React  (0) 2023.03.20
JSX  (0) 2023.03.07
State and LifeCycle(생명주기)  (0) 2023.03.07
컴포넌트(Components)  (0) 2023.03.04

댓글