https://ko.reactjs.org/docs/hooks-intro.html

Hook은 React 버전 16.8부터 React 요소로 새로 추가되었습니다. 
Hook을 이용하여 기존 Class 바탕의 코드를 작성할 필요 없이 상태 값과 여러 React의 기능을 사용할 수 있습니다.
각 생명주기 메서드에는 자주 관련 없는 로직이 섞여들어가고는 합니다.
componentDidMount 와 componentDidUpdate는 컴포넌트안에서 데이터를 가져오는 작업을 수행할 때 
사용 되어야 하지만, 같은 componentDidMount에서 이벤트 리스너를 설정하는 것과 같은 관계없는 
로직이 포함되기도 하며, componentWillUnmount에서 cleanup 로직을 수행하기도 합니다.

이같은 문제를 해결하기위해, 생명주기 메서드를 기반으로 쪼개는 것 보다는,
Hook을 통해 서로 비슷한 것을 하는 **작은 함수의 묶음**으로 컴포넌트를 나누는 방법을 사용할 수 있습니다.

Hook은 **Class없이** React 기능들을 사용하는 방법을 제시합니다. 
개념적으로 React 컴포넌트는 항상 **함수에 더 가깝습니다**.
React로부터 Class를 제거할 계획은 없습니다.

**선택적 사용** 
기존의 코드를 다시 작성할 필요 없이 일부의 컴포넌트들 안에서 Hook을 사용할 수 있습니다.
그러나 당장 Hook이 필요 없다면, Hook을 사용할 필요는 없습니다.

**100% 이전 버전과의 호환성** 
Hook은 호환성을 깨뜨리는 변화가 없습니다.