Front-End/React

React] Hook : CustomHook

์™•๊ฐ€๐Ÿ‘ 2023. 6. 26. 17:26
728x90
๋ฐ˜์‘ํ˜•

CustomHook

๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ™์€ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿด ๋•Œ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด ์ง์ ‘ hook์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋กœ์ง์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์งˆ ๊ฒฝ์šฐ๋„ ์žˆ๊ณ ,

๋กœ์ง๊ณผ ํƒœ๊ทธ๋“ค ์‚ฌ์ด์— ๊ตฌ๋ถ„์ด ์ง“๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ด๋„ ์•„์ฃผ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

(ํ•จ์ˆ˜๋ฅผ ์ชผ๊ฐœ์„œ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” hook์„ ์‚ฌ์šฉํ•  ๋ฟ...)

 

 


 

 

์˜ˆ

 

name์ด๋ž‘ email ๋‘ ๊ฐœ์˜ state๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

name์€ ์ง์ ‘ ๋งŒ๋“  useInput์ด๋ผ๋Š” ์ปค์Šคํ…€ํ›…์„ ์‚ฌ์šฉํ•˜์˜€๊ณ ,

email์€ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋กœ์ง์ƒ ๋‘ ๊ฐœ์˜ ์ฐจ์ด์ ์ด ์—†๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ useInput์ด๋ผ๋Š” ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค๋ฉด, email์˜ ๊ฐ’์„ ํ™•์ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” emailChange, uesEffect์—์„œ ์ฐ์€ console.log๋ฅผ state๋ณ„๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ฃผ์†Œ ๋“ฑ ์ข€ ๋” ๋‹ค์–‘ํ•œ inputํƒœ๊ทธ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด, ๊ฐ๊ฐ ๋‹ค ๋งŒ๋“ค์–ด์„œ ์ง€์ •ํ•ด ์ค˜์•ผ ๋์„ ๊ฒ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด useInput์ด๋ผ๋Š” ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ค์—ˆ๊ณ , email state ๋˜ํ•œ useInput์œผ๋กœ ์„ ์–ธํ•ด ์ฃผ๋ฉด, ๊ฐ„์†Œํ™”์‹œ์ผœ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

 

 


 

 

์ด์ฒ˜๋Ÿผ ๋ฐ˜๋ณต๋˜๋Š” ์†Œ์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ณดํ†ต ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ž์—์„œ ์ ์—ˆ๋˜ ๋Œ€๋กœ ๋‹จ์ˆœํžˆ ๋กœ์ง์„ ๊ตฌ๋ถ„ ์ง“๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 
(๋‚จ๋ฐœํ•  ๊ฒฝ์šฐ, ์˜คํžˆ๋ ค ํ—ท๊ฐˆ๋ฆด ์ˆ˜๋Š” ์žˆ์œผ๋‹ˆ ๊ทธ๊ฑด ๊ฐœ๋ฐœ์ž ์žฌ๋Ÿ‰ ๊ฒƒ...)

 

 

728x90