const timer = setInterval(() => {
    if (상태) 로직();
    else clearInterval(timer);
  }, 1000);

이런식으로 외부상태로 분기처리해서
콜백 안에서 인터벌 종료해야함.

근데 저 상태가 리액트 useState인 경우에는
저 콜백이 실행되는 시점에서 받은 상태가 고정이 되더라.

저 로직()도 리액트 바깥의 클래스에서 받아오는거라
그 클래스안에 따로 멤버를 만들어 상태를 관리하니
셋인터벌 콜백 안에서도 상태변경도 제대로 되고 분기처리도 잘됨.

궁금한건 리액트훅스와 외부클래스 상태의
어떤 차이때문에 이런 문제가 생기는거야??

저 상태가 랜더링 의존성도 가지고있어서
상태 하나를 리액트훅스, 클래스 멤버로 이중으로 관리하고있어서
오버헤드는 모르겠지만 코드는 매우 지저분해짐

- dc official App