[A project ] study(4) React Hooks와 React Hook Form

dev kyu·2025년 1월 10일

project

목록 보기
6/15

React Hooks란,

React Hooks는 React에서 상태(state)와 생명주기(lifecycle)를 관리할 수 있도록 해주는 기능이야.
즉, 클래스 컴포넌트가 아닌 함수형 컴포넌트에서도 상태를 사용할 수 있게 해주는 도구지.

  • React Hooks는 컴포넌트의 "수납공간"
    React 컴포넌트가 단순히 UI만 보여주는 게 아니라, 데이터를 기억하거나, 어떤 동작을 처리해야 할 때 사용해.

  • Hooks는 컴포넌트 안에 상태를 저장할 공간을 만들어줘.

  • 주요 React Hooks

    • useState: 상태를 추가하고 관리.
      (예) 카운터 숫자를 기억하거나, 다크 모드 상태를 저장.
    • useEffect: 컴포넌트가 화면에 나타날 때나 사라질 때 실행할 동작을 정의.
      (예) API 호출, 구독(subscribe) 등.
    • useContext: 전역 데이터를 공유.
      (예) 로그인 상태나 테마 설정을 여러 컴포넌트에서 공유.
    • useReducer: 복잡한 상태 업데이트 로직을 관리.
      (예) 상태를 여러 단계로 변경해야 하는 경우.
  • 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 Hook Form은 React에서 폼 데이터를 쉽게 관리할 수 있도록 도와주는 라이브러리야.
폼(input, checkbox 등)에서 입력된 값을 저장하고 검증하는 과정을 간단하게 만들어.

  • React Hook Form은 "폼 관리자"
    입력값을 관리하고, 올바르게 입력되지 않았을 때 경고를 띄워주는 관리자 역할을 해.

  • 기본 HTML 폼을 사용하면 데이터 관리가 번거롭지만, React Hook Form을 사용하면 훨씬 간단져.

  • React Hook Form의 주요 특징

    • 폼 상태 관리: 입력값(예: 이름, 이메일 등)을 쉽게 저장하고 업데이트.
    • 유효성 검증: 값이 비어 있거나, 형식이 맞지 않을 때 에러 메시지 표시.
    • 가벼움: React의 기본 기능을 활용해 성능에 부담을 주지 않음.
    • 외부 라이브러리와 통합 가능: Zod, Yup 같은 검증 라이브러리와 함께 사용해 더 강력한 유효성 검증 가능.
  • 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의 차이점
구분React HooksReact Hook Form
역할상태와 생명주기를 관리폼 데이터를 관리하고 유효성을 검증
주요 기능useState, useEffect 등 다양한 Hook 제공register, handleSubmit으로 폼 데이터를 관리
사용 대상전반적인 상태 관리 (예: 다크 모드, 카운터 등)폼 데이터 입력 및 검증 (예: 회원가입, 로그인 폼 등)
라이브러리 여부React에 내장된 기능외부 라이브러리 (React Hook Form)
  • React Hooks: React 컴포넌트의 상태와 생명주기를 관리하기 위한 내장 도구.
  • React Hook Form: 폼 데이터 입력 및 검증을 간단하게 만들어주는 외부 라이브러리.
profile
dev kyu

0개의 댓글