cf. 메모리 자원 낭비? 모르겠는데? 그럴수있찌!
예를 들어서 class형 컴포넌트에서는 setState()함수를 통해 "모든" state를 업데이트 했단말얏! 그런데 useState()함수를 사용하면 변수 "각각"에 set함수가 존재하게 되는데 이거를 개별적으로 관리할 수 있게되는거얏!!
함수형 컴포넌트에 state와 Life Cycle관리를 연동할 수 있게 하는 함수를 생각해 냈는데........이것이 바로! 🌸hooks🌸
리액트는 useState를 통해 생성한 상태에 접근하고, 유지하기 위해 closure를 이용해서 함수형 컴포넌트 바깥에 state를 저장한다!
함수형 컴포넌트가 리렌더링 되는 경우!
함수 안에 작성된 모든 코드가 다시 실행됨
다시 말해, 함수 컴포넌트 안에서 state를 저장할 수 없음!
함수형 컴포넌트 안에는 state가 저장될 수 없다는 단점을 보완하기 위해, useState 함수를 이용하여 함수형 컴포넌트 바깥에 state를 저장하고 관리한다!
hook총정리_최종진짜최종진짜진짜최종진짜마지막진짜진짜마지막(했던말 반복주의).txt
hook은 2018년 React Conf에서 Sophie Alpert와 Dan Abramov에 의해서 처음소개 되었고, 이후 React 16.8.0 버전부터 배포됨
"컴포넌트 사이에서 상태로직을 재사용하기 어려웠지" 그래서 이를 보완하기 위해! render props, 고차컴포넌트(HOC)를 활용했지만 이는 컴포넌트의 재구성을 강요하고 코드를 추적하기 어렵다는 단점과 wrapper hell이라는 부작용을 야기했단마랴
특히, class형 컴포넌트는 JS의 this키워드가 다른 언어에서와 다르게 작동한다는 점때문에 혼란을 야기하고, 재사용과 구성이 어렵게 만들었다!
함수형 컴포넌트를 보완하기 위해 등장한 함수가 Hook(class없이 React기능 사용 가능)이고, Hook이 등장했다고 하더라도 class형 컴포넌트가 사라지지 않기 때문에 기존 코드를 다 엎어야 한다는 생각은 하지 않아도 됨