훅의 장점으로, 기존 클래스 기반에서 생명주기에 따라 로직을 복잡하게 구사했던 것을 간편하게 개선할 수 있다.
2. Hook overview
useEffect는 sideEffect를 커버하기 위한 hook이다.
useEffect는 렌더링 이후에 effect를 수행한다
useEffect에서 반환하는 함수를 이용하면 effect를 해제할 수 있다.
Hook을 호출할 때는 최상위 함수에서만 호출한다.(조건문이나 반복문 내에서 hook실행금지)
React함수 컴포넌트 안 이거나, custom Hook 내에서만 Hook을 호출한다.
3. Using the State Hook
Hook이란 함수 컴포넌트 안에서 여러가지를 관리하는 특별한 함수.
useState로 관리되는 state변수는 함수가 끝나도 사라지지 않는다.
this.setState는 병합하지만 setState는 대체한다.(모든 값에 대한 재지정이 필요)
4. Using the Effet Hook
기존 클래스 컴포넌트에서도, 사이드이펙트를 다룰 때 componentDidMount, DidUpdate 즉 DOM이 바귀고 난 뒤 이펙트를 처리했다.
Side Effect를 수행한다.
useEffect가 컴포넌트 안에 있는 이유는 state에 접근할 수 있기 때문이다.
useEffect 에 전달되는 함수를 effect라고 한다.
리렌더링시마다 계속 effect는 달라진다.
clean하려면(구독 해제 등) effet hook 내에서 return을 해준다. 리턴안에 있는 함수는 Update나 unmount 전에 호출이 된다.
예시로 들어져 있는 FriendStatus 컴포넌트는 문자열만 리턴한다...!
6. Building Your Own Hooks
커스텀 훅은 이름이 use로 시작하는 함수이다.
커스텀 훅 내에서는 기존의 Hook을 호출할 수 있다.
useFriendStatus 이라는 custom Hook은 ID를 받아와서 online인지 아닌지를 돌려준다.
FriendStatus는 온라인인지 아닌지를 문자열로 리턴하고, FriendListItem은 온라인인지 아닌지를 판단해서 리스트 아이템을 반환한다. 둘 다 모두 온라인인지 아닌지를 판단해야하는 공통로직이 들어가고, 이를 추상화시켰을 뿐이다. 즉 원래 useState... useEffect 등등으로 복잡하게 처리해야했던 것들을 커스텀 훅 속에 다 넣고 결과만 가져오는 것이다.
댓글을 사용할 수 없습니다.