React 는 왜 class 보다 function hook 을 쓰는가?

반응형

쓰레드가 없기 때문. 쓰레드가 있었다면 교착상태에 대한 컨트롤이 가능하므로 객체지향적으로 해도되지만 웹브라우저에 쓰레드는 없으니..

 

리액트 컴포넌트는 쓰레드가 없어서 선점형 방식으로 개발할 경우 동시다발적 이벤트 및 화면 갱신 그리고 사이드 이펙에서 무결성을 보장하기 힘든 코드가 될 가능성이 높아진다. 클래스 컴포넌트에서 라이프 사이클 메소드에 관련 로직들이 한번에 들어가게 되는데 그렇게 되면 나중에 코드가 난잡해지고 충돌이 일어날 가능성이 높아진다. 함수형 컴포넌트와 훅의 경우 훅은 각각의 상태에 대한 변화 감지를 하고 또한 각 라이프 사이클 메소드라는 개념보다 useEffect  라는 이펙에 중점을 두기 때문에 각 상태와 이벤트들도 각각 독립적으로 컨트롤 할 수 있으며 컴포넌트의 라이프사이클도 이펙 훅으로 컨트롤이 된다. 정확히는 화면의 갱신에 대한 교착 상태 때문. 아이폰을 보면 UI 갱신 쓰레드는 따로 있다.

 

따라서 클래스 컴포넌트를 사용할 경우 이러한 교착상태에 대한 고려를 충분히 하면서 코딩해야 한다.

 

결국 컴포넌트라는 것은 상태와 이벤트 아니었던가...

반응형

댓글

Designed by JB FACTORY