React

React - 주요개념 #5 State and Liftcycle

행복하게사는게꿈 2020. 11. 27. 15:02

2020/11/27 - [React] - react - 주요개념#3 엘리먼트 렌더링(element rendering)

에서 잠깐 다룬 Clock 예시를 다시 살펴보겠습니당!

 

엘리먼트 렌더링(element rendering) 에서는 UI를 업데이트하는 한 가지 방법만 배웠고,

 

렌더링 된 출력값을 변경하기 위해 ReactDOM.render()를 호출했습니당 

 

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

setInterval(tick, 1000);

 -> 여기서 보면 ReactDOM.render가 1초마다 setInterval(tick, 1000)을 통해 계속 호출되고 있다.

 

 

일반적으로 React에서 ReactDOM.render는 한번 쓰여진다고 말했었는데! 그렇게 하기 위해 이어서 공부해보자

 

 

 

우선 tick Component를 나누자

function Clock(props) {
  return (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {props.date.toLocaleTimeString()}.</h2>
    </div>
  );
}

function tick() {
  ReactDOM.render(
    <Clock date={new Date()} />,
    document.getElementById('root')
  );
}

setInterval(tick, 1000);

나누긴 했는데

 

Clock Component에서 타이머를 설정하고, 매초 UI를 업데이트하는것이  Clock Component 구현 세부사항이 되어야 하는데

 

위의 코드는 그게 아니다.

 

-> 한 번만 코드를 작성하고 Clockd 이 스스로 업데이트하도록 만들어야 한다.

ReactDOM.render(
  <Clock />,
  document.getElementById('root')
);

 

이것을 구현하기 위해서 Clock Component에 state를 추가해야 한다

 

 -> state는 props와 유사하지만, 비공개이며 Component에 의해 완전히 제어된다!!