코딩 공부

React - 실시간 폼 유효성 피드백 + UX 개선

새혀니 2025. 4. 20. 02:20

import { useForm } from 'react-hook-form';

export default function SignupForm() {
  const {
    register,
    handleSubmit,
    formState: { errors, touchedFields },
  } = useForm({ mode: 'onChange' });

  const onSubmit = (data) => console.log(data);

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <div>
        <input
          {...register('email', {
            required: '이메일은 필수입니다',
            pattern: {
              value: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
              message: '이메일 형식이 올바르지 않습니다',
            },
          })}
          placeholder="이메일 입력"
          style={{
            borderColor: touchedFields.email && errors.email ? 'red' : '#ccc',
          }}
        />
        {errors.email && <small>{errors.email.message}</small>}
      </div>

      <button type="submit">가입하기</button>
    </form>
  );
}