Front

[React] Element. 변경된 부분만 다시 렌더링하자

연_우리 2023. 2. 4. 14:49
반응형

 

 

 

 

Element

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

리액트의 가장 작은 단위이다. Component와는 다르다!

Element는 Component의 구성요소이며 화면에 렌더링할 DOM 정보를 React에 알려주는 객체이다.

 

Element가 있기 때문에 값이 변경된 부분만 다시 렌더링 할 수 있다. 어떻게 가능할까?

 

JS의 경우

<html>
<head>
  <meta charset="utf-8">
  <title>Hello HTML!</title>
</head>
<body>
  <div id="root" class="root">
  </div>
  <script>
    const root = document.getElementById('root');

    //현재 시간을 보여주도록 코드 작성
    function tick() {

      //element선언
      const element = `
        <div>
          <h1>Hello, world!</h1>
          <h2>It is ${new Date().toLocaleTimeString()}.</h2>
        </div>
      `;

      //root 하위의 HTML코드를 element로 변경한다
      root.innerHTML = element;
    }

    //1초에 한번씩 tick()함수를 호출한다.
    setInterval(tick, 1000);

  </script>
</body>
</html>

변경점은 시간 뿐임에도 불구하고 root부터 모든 태그가 전체적으로 다 변경된다.

 

 

React의 경우

//root 아이디를 가진 태그를 찾아서 루트로 선언한다
const root = ReactDOM.createRoot(
  document.getElementById('root')
);


//현재 시간을 보여주도록 jsx 작성
function tick() {

  //element선언
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
  
  //root에 element를 렌더링해달라고 한다
  root.render(element);
}

//1초에 한번씩 tick()함수를 호출한다.
setInterval(tick, 1000);

 

똑같이 tick() 함수를 호출하는데 시간 부분만 변경된다.

 

 

React Element의 장점은?

만약 tick() 함수가 여러 태그를 바라보고있고, 내부가 복잡하다고 가정할 때

JS는 실제로 변경점이 없는 태그들 까지도 모두 변경되기 때문에 의도하지 않은 사이드이펙트가 발생될 확률이 높다.

반면에 React는 변경점만 변경되기 때문에 사이드이펙트에 대한 고민을 덜어낼 수 있다!

 

반응형
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 구글 플러스 공유하기
  • 카카오톡 공유하기