목차
- 훅이란?
- 탄생 배경
- 종류
- 장점
훅(Hook)이란?
Hook은 리액트 16.8 버전 이후 추가된 기능이며, Hook이 등장하면서 더 이상 상태를 관리하기 위해 Class를 쓸 필요가 없어졌다. 기존에는 Class형 컴포넌트에서만 상태를 관리 할 수 있었고, 함수형 컴포넌트에서는 상태를 관리할 수 없었지만, Hook을 통해 상태 관리를 할 수 있게 되었고, 상태 관리 뿐만 아니라 기존 클래스형 컴포넌트에서만 가능하던 여러 기능을 사용할 수 있게 되었다.
Hook이 등장하기 전 리액트에는 여러 문제들이 있었다.
탄생배경
리액트 컴포넌트는 클래스형 컴포넌트(Class component)와 함수형 컴포넌트(Functional component)로 나뉜다.
기존의 개발방식은 일반적으로 함수형 컴포넌트를 주로 사용하되 state이나 Life Cycle Method를 사용해야 할 때에만 클래스형 컴포넌트를 사용하는 방식이었다.
이유는 클래스형 컴포넌트가 함수형 컴포넌트에 비해 가지는 단점 때문이다.
- 클래스 문법이 어렵다.
- 축소가 어렵다.
- Logic의 재사용이 어렵다.
- 최신 기술의 적용이 효과적이지 않다.
이러한 단점을 제외하고, 위에 언급한 state나 Life Cycle Method를 사용하기 위해서는 클래스형 컴포넌트 사용이 불가피했다.
하지만 Hooks가 등장하고 함수형 컴포넌트에서도 두 작업이 가능해졌다!
종류
기본 Hooks
- useState (동적 상태 관리)
- useEffect (side effect 수행 -mount/unmount/update)
- useContext (컴포넌트를 중첩하지 않고도 전역 값 쉽게 관리)
추가 Hooks
- useReducer (복잡한 컴포넌트들의 state를 관리 -분리)
- useCallback (특정 함수 재사용)
- useMemo (연산한 값 재사용)
- useRef (DOM선택, 컴포넌트 안에서 조회/수정할 수 있는 변수 관리)
- useImperativeHandle
- useLayoutEffect
- useDebugValue
장점
- 코드가 간결해진다.
- 가독성이 좋아진다.
- 많은 라이브러리들도 훅으로만 나오고 있다.
- HOC 헬을 벗어 날 수 있다.
- 불필요한 것 같은 코드를 적을 필요가 없다.
Reference
https://ykss.netlify.app/react/hooks/
리액트 Hook(훅)이란?
Hook은 리액트 16.8 버전 이후 추가된 기능이며, Hook이 등장하면서 더 이상 상태를 관리하기 위해 Class를 쓸 필요가 없어졌다. 기존에는 Class형 컴포넌트에서만 상태를 관리 할 수 있었고, 함수형 컴
ykss.netlify.app
https://velog.io/@yangddu/React-Hook
[React] 리액트 훅(React Hook) 이란?
리액트 컴포넌트는 클래스형 컴포넌트(Class component)와 함수형 컴포넌트(Functional component)로 나뉜다. 기존의 개발방식은 일반적으로 함수형 컴포넌트를 주로 사용하되 state이나 Life Cycle Method를 사
velog.io
https://velog.io/@goyou123/React-Hooks-%EC%B4%9D%EC%A0%95%EB%A6%AC
React Hooks 총정리
hook에 관해서 공부한 내용커스텀 hook은 다른 글에서 다룰예정요약하자면 Hook은 함수형 컴포넌트가 클래스형 컴포넌트의 기능을 사용할 수 있도록 해주는 기능이다.React 16.8 버전 (2019년도) 에 추
velog.io
React-hook 이 나온 이유와 사용 해야 하는 이유
React hook이 나오기 전 까지는 리액트 life cycle을 사용하기 위해서 Class를 사용해야 됐었습니다. 리액트를 클래스로 사용하기 위해서는 React.Component를 extend 해야 하고 state을 사용하려면 super(props)..
surviveasdev.tistory.com
'프론트엔드 > React' 카테고리의 다른 글
[React Hook/Javascript] 리액트 useEffect 기본 개념, 예제 코드 (0) | 2022.04.28 |
---|---|
[React Hook/Javascript] useState 기본 개념, 예제 코드 (0) | 2022.04.28 |
[React/Javascript] 리액트 CLI로 로그인 구현하기(DB연결 X) (0) | 2022.04.25 |
[React/javascript] 댓글 CRUD 구현하기 (0) | 2022.04.22 |
[React] 생명주기 함수 (0) | 2022.04.22 |