본문 바로가기
Study/React

[노마드코더] ReactJS로 영화 웹 서비스 만들기 - State

by 22정민 2023. 1. 5.

https://nomadcoders.co/react-for-beginners

 

ReactJS로 영화 웹 서비스 만들기 – 노마드 코더 Nomad Coders

React for Beginners

nomadcoders.co

<!--index.html-->

<!DOCTYPE html>
<html>
  <body id="root"></body>
  <!--React import-->
  <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
  <!--React-dom import-->
  <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
  <!--Babel standalone-->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  <script type="text/babel">
    const root = document.getElementById("root");
    let counter = 0;
    //counter를 증가시키고 다시 render를 호출
    function countUp() {
      counter = counter + 1;
      render(0);
    }
    //render함수가 호출되면 똑같은 과정 반복
    //데이터가 바뀔때마다 Container를 rerender
    function render() {
      //Container를 root에 담아줌
      ReactDOM.render(<Container />, root);
    }
    //button 클릭할 때 countUp함수 호출
    const Container = () => (
      <div>
        <h3>Total Clicks: {counter}</h3>
        <button onClick={countUp}>Click me</button>
      </div>
    );
    render();
  </script>
</html>

 

리액트의 가장 큰 장점 : 변경된 부분만 업데이트 됨(변경된 부분 + 변화가 일어난 부분의 자식 컴포넌트들까지)

=> 일반 js를 쓴 브라우저는 노드 정보가 바뀔때마다 노드 트리를 5단계에 걸쳐 처음부터 다시 생성

하지만 리액트는 가상dom을 써서 우리 눈에 보이는 부분만 수정해서 보여주고 모든 업데이트가 끝나면 일괄로 실제dom에 던져줌

=> 브라우저 작동원리와 연관

 

프론트엔드는 렌더(트리)단계를 얼마나 최적화 하는가가 매우매우 중요!!

 

하지만 이 방법은 계속해서 render해주는 것을 잊으면 안됨 -> 최고의 방법은 아님