React Hooks는 React에서 상태(state)와 생명주기(lifecycle)를 관리할 수 있도록 해주는 기능이야.
즉, 클래스 컴포넌트가 아닌 함수형 컴포넌트에서도 상태를 사용할 수 있게 해주는 도구지.
React Hooks는 컴포넌트의 "수납공간"
React 컴포넌트가 단순히 UI만 보여주는 게 아니라, 데이터를 기억하거나, 어떤 동작을 처리해야 할 때 사용해.
Hooks는 컴포넌트 안에 상태를 저장할 공간을 만들어줘.
주요 React Hooks
React Hooks 간단 예제
import React, { useState } from 'react';
const Counter = () => {
const [count, setCount] = useState(0); // 상태 선언
return (
<div>
<p>현재 카운트: {count}</p>
<button onClick={() => setCount(count + 1)}>증가</button>
<button onClick={() => setCount(count - 1)}>감소</button>
</div>
);
};
export default Counter;
//useState를 사용해 숫자 상태를 저장. 버튼을 누를 때마다 상태가 업데이트되고, 화면이 변경.
React Hook Form은 React에서 폼 데이터를 쉽게 관리할 수 있도록 도와주는 라이브러리야.
폼(input, checkbox 등)에서 입력된 값을 저장하고 검증하는 과정을 간단하게 만들어.
React Hook Form은 "폼 관리자"
입력값을 관리하고, 올바르게 입력되지 않았을 때 경고를 띄워주는 관리자 역할을 해.
기본 HTML 폼을 사용하면 데이터 관리가 번거롭지만, React Hook Form을 사용하면 훨씬 간단져.
React Hook Form의 주요 특징
React Hook Form 간단 예제
import React from 'react';
import { useForm } from 'react-hook-form';
const SignupForm = () => {
const {
register, // 입력값을 관리하는 함수
handleSubmit, // 폼 제출 처리 함수
formState: { errors }, // 유효성 검사 에러
} = useForm();
const onSubmit = (data) => {
console.log("입력 데이터:", data);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<div>
<label>이름</label>
<input {...register("name", { required: "이름은 필수입니다." })} />
{errors.name && <p>{errors.name.message}</p>}
</div>
<div>
<label>이메일</label>
<input
{...register("email", {
required: "이메일은 필수입니다.",
pattern: {
value: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,
message: "유효한 이메일 주소를 입력해주세요.",
},
})}
/>
{errors.email && <p>{errors.email.message}</p>}
</div>
<button type="submit">제출</button>
</form>
);
};
export default SignupForm;
//register로 입력값을 React Hook Form에 등록. 폼 제출 시, handleSubmit으로 데이터 처리. 유효성 검사 실패 시 errors에 메시지를 표시.
| 구분 | React Hooks | React Hook Form |
|---|---|---|
| 역할 | 상태와 생명주기를 관리 | 폼 데이터를 관리하고 유효성을 검증 |
| 주요 기능 | useState, useEffect 등 다양한 Hook 제공 | register, handleSubmit으로 폼 데이터를 관리 |
| 사용 대상 | 전반적인 상태 관리 (예: 다크 모드, 카운터 등) | 폼 데이터 입력 및 검증 (예: 회원가입, 로그인 폼 등) |
| 라이브러리 여부 | React에 내장된 기능 | 외부 라이브러리 (React Hook Form) |