Post

🌰 [React] react-hook-form 을 μ‚¬μš©ν•΄ 쀑볡 μ²΄ν¬ν•˜κΈ°

μ™œ?

미루고 미뀘던 νšŒμ›κ°€μž…μ˜ 쀑볡확인 λ‘œμ§μ„ λ§Œλ“€μ–΄μ•Όν–ˆλ‹€.

signup-image (μ•„μ£Ό κ°„λ‹¨ν•œ νšŒμ›κ°€μž… 폼을 λ¨Όμ € λ§Œλ“ λ‹€)

ν˜„μž¬ 96TALK ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œλŠ” react-hook-form 라이브러리λ₯Ό μ‚¬μš© 쀑인데

쀑볡확인을 λ‘λ²ˆ ν•΄μ•Ό ν•˜λŠ” 상황에 λ†“μ˜€λ‹€.

이메일 validation 을 톡과 ν–ˆμ„ λ•Œμ—λ§Œ Server에 쀑볡확인 μš”μ²­ ν•  순 μ—†μ„κΉŒ?

μ˜€λŠ˜μ€ ν•΄λ‹Ή λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μœ μš©ν•œ trigger λ₯Ό μ†Œκ°œν•˜λ €κ³  ν•œλ‹€.


라이브러리 μ„€μΉ˜

1
npm install react-hook-form

μ‚¬μš© 법

1
2
// Signup.tsx
const { trigger } = useForm();
  1. trigger() ν•¨μˆ˜λ₯Ό κ°€μ Έμ˜¨λ‹€.
  2. trigger()λŠ” 비동기 ν•¨μˆ˜μ΄κΈ°μ— 그에 맞게 async ... await 을 κ±Έμ–΄μ€€λ‹€.
  3. argument 둜 register μ—μ„œ λ“±λ‘ν•œ 값을 λ„£μ–΄μ£Όλ©΄ ν•΄λ‹Ή input 의 validation 을 κ²€μ‚¬ν•œλ‹€.
  4. 검사 ν›„ 톡과면 true, μ‹€νŒ¨λ©΄ false λ₯Ό λ°˜ν™˜ν•΄μ£Όλ―€λ‘œ λ°˜ν™˜κ°’μœΌλ‘œ 둜직 처리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Singup.tsx
  const {
    register,
    handleSubmit,
    formState: { errors },
    setError,
    getValues,
    clearErrors,
    trigger, // trigger ν•¨μˆ˜λ₯Ό κ°€μ Έμ˜¨λ‹€
  } = useForm<ISignupProps>();

const onDuplicateEmailCheck = async () => {
const target = getValues("memberEmail");
const isValid = await trigger("memberEmail");
    if (isValid) {
      // Validation 성곡 μ‹œ
      try {
        const response = await getDuplicateEmail(target);
        // API μš”μ²­ ν›„ 응닡 κ°’ λ°›κΈ°

        if (response?.status === 200 && response?.data?.status === 200) {
          // μ‚¬μš©κ°€λŠ₯ ν•œ 메일일 경우
          setIsLoginMessage("μ‚¬μš©κ°€λŠ₯ν•œ 이메일 μž…λ‹ˆλ‹€.");
          clearErrors("memberEmail");
        }
      } catch (error) {
        setIsLoginMessage("μ€‘λ³΅λœ 이메일 μž…λ‹ˆλ‹€.");
        setError("memberEmail", { message: "νšŒμ›κ°€μž… 쑰건이 λ§žμ§€μ•ŠμŠ΅λ‹ˆλ‹€." });
      }
    } else {
        // Validation μ‹€νŒ¨ μ‹œ
    }
  };

마치며

μ—­μ‹œλ‚˜ 곡식 λ¬Έμ„œλ₯Ό 뒀져보면 λ‹€ λ‚˜μ˜¨λ‹€β€¦

λ°±μ•€λ“œ μ„œλ²„μ—μ„œλ„ validation 을 ν•˜μ§€λ§Œ μ΄μ€‘μ²˜λ¦¬λ₯Ό ν•˜λŠ”κ²Œ κ°€μž₯ μ’‹κΈ° λ•Œλ¬Έμ—

쀑볡확인 λ”°λ‘œ 재차 검증 ν•  수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μ•˜λ‹€. 결ꡭ은 성곡.

This post is licensed under CC BY 4.0 by the author.