Hook
은 함수 컴포넌트에서React State
와 생명주기 기능(Lifecycle Features)을 연동(hook into)할 수 있게 해주는 함수이다.
Hook
은 class
내에서는 동작하지 않는다.class
없이 React
를 사용할 수 있게 해주는 것이다.React
는 useState
같은 내장 Hook
을 몇 가지 제공한다.Component
간에 상태 관련 로직을 재사용하기 위해 Hook
을 직접 만드는 것(Custom Hook)도 가능하다.Component
사이에 상태와 관련된 로직을 재사용하기 어렵기 때문에 사용한다.Component
들을 이해하기 어렵기 때문에 사용한다.Class
는 사람과 기계를 혼동시킨다.State
, 라이프 싸이클 때문에 사용Class
로부터 한번 인스턴스가 생성이 되고 나면 독립적으로 움직일 수 있다Class
의 단점들을 보완한 Function Component
가 배포된 후 자주 사용된다.Hook
을 호출해야 한다.Function
내에서 Hook
하지 말 것 ❌import React, { useState } from 'react'
function Hooks(props) {
if (!props.isExist) {
const [state, setState] = useState(); // Error!
}
const [state, setState2] = useState(); // Error!
}
Function Component
내에서만 Hook
을 호출해야 한다. 일반 JavaScript Function
에서는 Hook
을 호출해서는 안된다.
Hook
사용 규칙을 지켜야React
가 각Hook
의 상태를 제대로 기억할 수 있다.Hook
은 규칙 2에 의해Class
형Component
의Method
뿐만 아니라 기타 일반 함수에서도 사용할 수 없다.Function Component
을 위한 기능이기 때문이다.