리액트 공식문서 읽기 - 주요개념(엘리먼트 렌더링)

2024. 3. 18. 10:15·웹 프로그래밍/React
반응형

엘리먼트 렌더링

엘리먼트 (!== 컴포넌트)

  • React 앱의 가장 작은 단위, 리액트 앱을 구성하는 요소
  • 화면에 표시할 내용을 기술한다.
const element = <h1 className="greeting">Hello, world!</h1>;
  • 브라우저 DOM 엘리먼트(브라우저 환경에서 웹 페이지의 구성요소를 나타내는 특수 객체)와 달리 React 엘리먼트는 일반 객체(plain Object)이며 쉽게 생성할 수 있다.
  • React DOM은 React 엘리먼트와 일치하도록 DOM을 업데이트한다.

 

DOM에 엘리먼트 렌더링하기

  • 루트(root) DOM 노드: root 안에 들어가는 모든 엘리먼트는 React DOM에서 관리한다.
<div id="root"></div>

 

  • React로 구현된 애플리케이션은 일반적으로 하나의 루트 DOM 노드가 존재한다.
  • React 엘리먼트를 렌더링하기 위해서는 우선 DOM 엘리먼트를 `ReactDOM.createRoot()`에 전달한 다음, React 엘리먼트를 `root.render()`에 전달해야 한다.
const root = ReactDOM.createRoot(document.getElementById('root'));
const element = <h1>Hello, world</h1>;
root.render(element);

 

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

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

UI를 업데이트하는 유일한 벙법은 새로운 엘리먼트를 생성하고 이를 `root.render()`로 전달하는 것이다.

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);
}

setInterval(tick, 1000);

👉 `setInterval()` 콜백을 이용해 매 초마다 `root.render()`를 호출하는 시계 코드

 

실제 대부분의 React 앱은 `root.render()`를 한 번만 호출한다.
위와 같은 코드가 유상태 컴포넌트(State 이용한 컴포넌트)에 어떻게 캡슐화되는지는 다음 장에서...

 

변경된 부분만 업데이트하기

React DOM은 해당 엘리먼트와 그 자식 엘리먼트를 이전의 엘리먼트와 비교하고 DOM을 원하는 상태로 만드는 데 필요한 경우에만 DOM을 업데이트한다.

위 시계 코드를 개발자 도구를 이용해 살펴보면, 전체 UI가 매초 다시 그려지는 대신 내용이 변경되는 텍스트 노드만 업데이트되는 것을 알 수 있다. 

 

 

 


공부에 참고하면 좋을 사이트

 

[React] - [처음 만난 리액트] - 12. Elements의 정의와 생김새(리액트 엘리먼트와 DOM 엘리먼트 차이점)

🧹 두서없이 적는 쉬운 정리 1. Elements란 리액트 앱을 구성하는 가장 작은 블록들 2. 실제 브라우저 DOM에 존재하는 엘리먼트 > DOM 엘리먼트, 리액트 Virtual DOM 존재하는 엘리먼트 > 리액트 엘리먼트

ccomccomhan.tistory.com

 

 

DOM 트리

 

ko.javascript.info

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'웹 프로그래밍 > React' 카테고리의 다른 글

리액트 공식문서 읽기 - 주요개념(State)  (1) 2024.03.19
리액트 공식문서 읽기 - 주요개념(Components와 Props)  (0) 2024.03.18
리액트 공식문서 읽기 - 주요개념(Hello World, JSX 소개)  (0) 2024.03.18
리액트 공부 내용 정리  (0) 2023.09.14
[React] 상위 컴포넌트에서 하위 컴포넌트로 데이터 전달하기(props)  (0) 2023.09.05
[React] Link to 밑줄 없애기  (0) 2022.04.10
'웹 프로그래밍/React' 카테고리의 다른 글
  • 리액트 공식문서 읽기 - 주요개념(State)
  • 리액트 공식문서 읽기 - 주요개념(Components와 Props)
  • 리액트 공식문서 읽기 - 주요개념(Hello World, JSX 소개)
  • 리액트 공부 내용 정리
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 프로그래밍 N
        • Programming
        • C | C++
        • Java N
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    Til
    ZeroCho
    자바스크립트
    알고리즘
    포트폴리오
    컴퓨터네트워크
    플러터
    구현
    bfs
    리액트
    AWS
    프로그래머스
    Jiraynor Programming
    웹사이트
    SWEA
    강의내용정리
    프로젝트
    뉴렉처
    타입스크립트
    공식문서
    클론 프로젝트
    d3
    spring boot
    mysql
    Next.js
    파이썬
    자바
    블로그 제작
    React
    백준
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
리액트 공식문서 읽기 - 주요개념(엘리먼트 렌더링)
상단으로

티스토리툴바