React Hooks는 리액트 함수형 컴포넌트에서 "상태 관리"나 "라이프사이클 효과" 같은 기능을 사용할 수 있게 해주는 함수들이다. 이전에는 클래스 컴포넌트에서만 가능했지만, Hooks 덕분에 함수형 컴포넌트로도 모든 기능을 구현할 수 있다.
컴포넌트 내부에서 상태를 관리할 수 있게 해주는 Hook이다.
const [count, setCount] = useState(0);
예: 버튼 클릭할 때 숫자 증가시키기
function Counter() {
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
클릭 수: {count}
</button>
);
}
컴포넌트가 렌더링된 후 실행되는 작업을 정의할 수 있는 Hook이다. 예: API 요청, 콘솔 로그, 타이머 설정 등
useEffect(() => {
console.log("컴포넌트가 렌더링되었거나 count가 바뀜");
}, [count]);
DOM 요소를 직접 제어하거나, 상태 변화 없이 값을 저장할 때 사용하는 Hook이다.
const inputRef = useRef(null);
<input ref={inputRef} />
<button onClick={() => inputRef.current.focus()}>포커스 이동</button>
또는 렌더링 없이 변수처럼 값을 보존하고 싶을 때 사용한다.
const renderCount = useRef(0);
renderCount.current += 1;
복잡한 계산 결과를 기억(memoization)하여 성능을 최적화할 때 사용하는 Hook이다.
const expensiveValue = useMemo(() => {
return computeSomething(a, b);
}, [a, b]);
함수를 기억하여 불필요한 재생성을 막는 Hook이다. 특히 자식 컴포넌트에 함수를 props로 넘길 때 유용하다.
const handleClick = useCallback(() => {
console.log("클릭!");
}, []);
Context API를 사용하여 전역 상태를 컴포넌트에서 쉽게 사용할 수 있도록 해주는 Hook이다.
const user = useContext(UserContext);
상태를 여러 단계로 관리하고 싶을 때 사용하는 Hook이다. Redux와 비슷한 구조를 가진다.
const [state, dispatch] = useReducer(reducer, initialState);
Hook기능
useState | 상태값 사용 및 변경 |
useEffect | 사이드 이펙트 실행 (렌더 후) |
useRef | DOM 참조 or 값 보존 |
useMemo | 계산 결과 기억 |
useCallback | 함수 기억 |
useContext | 전역 상태 사용 |
useReducer | 복잡한 상태 처리 |
각 Hook은 역할이 분명하며, 서로 조합하여 복잡한 UI 로직도 함수형 컴포넌트만으로 구현할 수 있다.
React - 상태 끌어올리기(State Lifting) (0) | 2025.06.01 |
---|---|
React - Hook 사용 규칙과 Custom Hook 예제 (0) | 2025.06.01 |
React - useRef (0) | 2025.06.01 |
React - State로 입력 관리하기 (0) | 2025.06.01 |
React - State와 Props (0) | 2025.06.01 |