๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[PROJECT] ๋‚ด์ผ์˜ ์ง‘

#7. ํšŒ์›๊ฐ€์ž… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (react-hook-form)

#7-0 ๋“ค์–ด๊ฐ€๋Š” ๋ง


 ๊ธฐ์กด์— ์ž‘์„ฑํ•œ ํšŒ์›๊ฐ€์ž… ํผ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๋ ค๋˜ ์ฐจ์— react-hook-form์ด ์žˆ๋‹ค๋Š”๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. react-hook-form์„ ์ด์šฉํ•˜๋Š”๊ฒŒ ๊ธฐ์กด ์ฝ”๋“œ์˜ ์–‘๋„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ์ข€ ๋” ์ž˜ ์งœ์—ฌ์ง„ ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ์„๊ฑฐ ๊ฐ™์•„ ํ•œ๋ฒˆ ์ ์šฉ์‹œ์ผœ ๋ณด์•˜๋‹ค. 


#7-1 react-hook-form ์ด์šฉํ›„๊ธฐ


๋จผ์ € npm install react-hook-form์„ ํ•˜์—ฌ ์„ค์น˜ํ•œ ํ›„์— ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€(https://react-hook-form.com/kr/get-started/)์— ์•ˆ๋‚ด๋œ ๋Œ€๋กœ ์‹คํ–‰ํ•ด ๋ณด์•˜์œผ๋‚˜ "Uncaught TypeError: path.split is not a function" ๋ž€ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค.
๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์—ฌ๋Ÿฌ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ์ค‘ react-hook-form ๋ฒ„์ „์„ 6์œผ๋กœ ๋‚ฎ์ถ”๋ฉด ๋œ๋‹ค๊ณ  ํ•ด์„œ ๋‹ค์‹œ npm install react-hook-form@6์œผ๋กœ ์žฌ์„ค์น˜ ํ›„ ์ง„ํ–‰ํ•˜์˜€๋‹ค. 

 

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ํ•œ๊ตญ์–ด ๋ฒ„์ „๋„ ์žˆ์–ด์„œ handleSubmit, register, watch, errors ๋“ฑ ์—ฌ๋Ÿฌ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ž˜ ์ด์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, handleSubmit์œผ๋กœ ํผ์˜ onSubmit ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด e.preventDefault( )๋ฅผ ๊ตณ์ด ์ ์ง€ ์•Š์•„๋„ ์ด์™€ ๊ฐ™์ด ๋™์ž‘๋˜๊ณ , register์˜ validate ์†์„ฑ์„ ํ†ตํ•ด '๋น„๋ฐ€๋ฒˆํ˜ธ'์™€ '๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ'์˜ ๋ฌธ์ž๊ฐ€ ๋™์ผํ•œ์ง€๋„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋‚˜์ค‘์— ๋งˆ์ € ์•ฝ๊ด€๋™์˜ ์ฒดํฌ๋ฐ•์Šค๋„ react-hook-form์„ ์ด์šฉํ•ด ์ˆ˜์ •ํ•ด๋ด์•ผ๊ฒ ๋‹ค. ์ผ๋‹จ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€ ํšŒ์›๊ฐ€์ž… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋Šฅ์„ ์ˆ˜์ • ๋.