React 16.8에서 새롭게 도입된 Class가 필요 없는 상태관리 도구이다.

Hook은 함수 컴포넌트에서 React state와 생명주기 기능 (lifecycle features)을 연동 (hook-into) 할 수 있게 해주는 함수다.

Hook Into해준다고 해서 Hook이라고 부른다.

Hook이 나온 배경

Hook 사용해보기

import React, { useState } from 'react';

function Example() {
	const [count, setCount] = useState(0);

	return (
		<div>
			<p>Clicked {count} times</p>
			<button onClick={() => setCount(count + 1)}>
				click
			</button>
		</div>
	)
}

Hook은 use~~~ 라는 네이밍 룰을 따르는게 관습이다. (커스텀 훅을 만들더라도 use라는 네이밍을 이용해 그 기능이 훅임을 쉽게 파악할 수 있다.)

기본적으로 사용할 수 있는 useState는 2차원 배열로 구성된다.

0번째 index는 값을, 1번째 index는 setter를 사용한다.

const [count, setCount] = useState(0);

--------------

var countVariable = useState(0);
var count = countVariable[0];
var setCount = countVariable[1];

즉, 대괄호를 통해 한 줄로 표현한 식과 변수들의 나열로 표현한 식은 동일한 형식이다.

Hook에서 side effect 사용하기

어떠한 데이터가 변경이 됐을 때 추가적인 작업을 진행하기 위해 Effect Hook을 이용해 side effect를 수행할 수 있다.

useEffect(() => {
	document.title = `click ${count}`;
});