Curl Up Black Cat

😎 μ„œλ‘ 

μ•ˆλ…•ν•˜μ„Έμš”! μ˜€λŠ˜μ€ React Hook Form κ³Ό useRef 의 쑰합을 톡해 νŠΉμ • input μš”μ†Œμ— 직접 μ „κ·Όν•˜λŠ” 방법에 λŒ€ν•΄ κ³΅μœ ν•˜κ³ μž ν•©λ‹ˆλ‹€.
졜근 κ²Œμ‹œνŒ ν”„λ‘œμ νŠΈμ—μ„œ κ²Œμ‹œκΈ€μ„ μ—΄ λ•Œ λŒ“κΈ€ μž‘μ„±μž ν•„λ“œμ— μžλ™μœΌλ‘œ 포컀슀λ₯Ό μ£Όκ³  μ‹Άμ—ˆλŠ”λ° React Hook Form λ„μž… μ‹œμ— 이λ₯Ό κ΅¬ν˜„ν•˜λŠ”λ° 어렀움을 κ²ͺμ—ˆμŠ΅λ‹ˆλ‹€. 이에 λŒ€ν•œ λ‚΄μš©κ³Ό 해결방법을 κ³΅μœ ν•©λ‹ˆλ‹€.


πŸ€” λ¬Έμ œμƒν™© μ™œ ref={commentAuthorInputRef} λ‘œλŠ” λ™μž‘ν•˜μ§€ μ•Šμ„κΉŒ?

React Hook Form 을 μ‚¬μš©ν•  λ•Œ, μ£Όμš” κΈ°λŠ₯ 쀑 ν•˜λ‚˜λŠ” register ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” input ν•„λ“œλ₯Ό κ΄€λ¦¬ν•˜κ³ , μœ νš¨μ„± κ²€μ‚¬λ‚˜ 폼 제좜 λ“±μ˜ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. μ œκ°€ μ²˜μŒμ— μ‚¬μš©ν•œ 방식은 μ•„λž˜μ™€ κ°™μ•˜μŠ΅λ‹ˆλ‹€.

const commentAuthorInputRef = useRef(null)

...

useEffect(() => {
    commentAuthorInputRef.current.focus();
}, []);

...

<input ref={commentAuthorInputRef} ... />

그런데, μœ„μ™€ 같은 λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ React Hook Form 의 register 와 ref 와 λ™μ‹œμ— μ—°κ²°λ˜μ§€ μ•Šμ•„, μž…λ ₯ 값이 undefined 둜 λ°˜ν™˜λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
 
register ν•¨μˆ˜λŠ” input ν•„λ“œλ₯Ό λ“±λ‘ν•˜λ©΄μ„œ ν•΄λ‹Ή  ν•„λ“œμ˜ μ°Έμ‘° ref λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ—, μ™ΈλΆ€μ—μ„œ λ³„λ„μ˜ ref λ₯Ό μ—°κ²°ν•  λ•ŒλŠ”  register μ™€μ˜ 연동이 쀑첩될 수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ•Œλ¬Έμ—, λ‚΄λΆ€μ μœΌλ‘œ 폼 κ°’μ˜ μƒνƒœ κ΄€λ¦¬λ‚˜ μœ νš¨μ„± 검사와 같은 κΈ°λŠ₯듀이 μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•Šκ²Œ λ©λ‹ˆλ‹€.


🌟 ν•΄κ²½ 방법: ref λ₯Ό ν•¨μˆ˜λ‘œ μ •μ˜ν•˜κΈ°

React Hook Form 의 register ν•¨μˆ˜λŠ” ref 와 ν•¨κ»˜ 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이λ₯Ό μž…λ ₯ μš”μ†Œμ— μ—°κ²°ν•˜λ©΄μ„œ λ™μ‹œμ— μ™ΈλΆ€ ref 에도 μ—°κ²°ν•΄μ•Ό ν–ˆκΈ° λ•Œλ¬Έμ—, ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 이λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 <input
  {...commentRegister('author', { 
  	required: 'λŒ“κΈ€ μž‘μ„±μžλŠ” ν•„μˆ˜ μž…λ ₯μž…λ‹ˆλ‹€.' 
  })}
  ref={(e) => {
    commentRegister('author').ref(e); // react-hook-form 을 μœ„ν•œ ref
    commentAuthorInputRef.current = e; // μ™ΈλΆ€ ref
  }}
  ...
/>

μœ„ μ½”λ“œμ—μ„œ μ€‘μš”ν•œ 점은 ref ν•¨μˆ˜κ°€ 두 가지 μ—°κ²° μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
1. React Hook Form 의 ref 에 μš”μ†Œ(HTMLInputElement)λ₯Ό μ—°κ²°
2. μ™ΈλΆ€ ref에도 λ™μΌν•œ μš”μ†Œ(HTMLInputElement)λ₯Ό μ—°κ²°
 
이λ₯Ό 톡해 React Hook Form 의 κΈ°λŠ₯을 κ·ΈλŒ€λ‘œ ν™œμš©ν•˜λ©΄μ„œλ„, μ™ΈλΆ€μ—μ„œλ„ input μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆκ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.🀭


🎬  κ²°λ‘ 

React Hook Form 은 맀우 νŽΈλ¦¬ν•œ λ„κ΅¬μ΄μ§€λ§Œ, λ•Œλ•Œλ‘œ λ‹€λ₯Έ React κΈ°λŠ₯과의 쑰합이 ν•„μš”ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 였늘 μ†Œκ°œν•œ 방식은 κ·ΈλŸ¬ν•œ κ²½μš°μ—λ„ 도움이 될 κ²ƒμž…λ‹ˆλ‹€. 특히, μ™ΈλΆ€ ref와 ν•¨κ»˜ React Hook Form 을 μ‚¬μš©ν•˜κ³ μž ν•  λ•Œ 이 방식이 큰 도움이 될 κ²ƒμž…λ‹ˆλ‹€. 
 
그럼 μ˜€λŠ˜λ„ 즐겁게 μ½”λ”©ν•˜μ„Έμš”! 😁
 

+ Recent posts