๊ฐœ๋ฐœ/React

[React.Js] UseState ์‚ฌ์šฉ / ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ณ  ์ง€์šฐ๊ธฐ

๋ฐ(Ming) ๐Ÿˆ‍โฌ› 2022. 2. 18. 00:18
728x90
๋ฐ˜์‘ํ˜•

React.js๋ฅผ ์“ธ ๋•Œ ์ •๋ง ๋งŽ์ด ์“ฐ๋Š” hook ์ค‘์— ํ•˜๋‚˜์ธ useState ๊ธฐ๋ณธ ์ค‘์˜ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.

 

์ผ๋‹จ hook์ด๋ž€ ๋ฌด์—‡์ด๋ƒ?!

Hook์€ ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด useState๋Š” state๋ฅผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋‹ค๋ฅธ Hook๋“ค์€ ๋‚˜์ค‘์— ์‚ดํŽด๋ด…์‹œ๋‹ค! ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ state๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ”๊พธ๊ณค ํ–ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ Hook์„ ์ด์šฉํ•˜์—ฌ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ต๋‹ˆ๋‹ค.

์•„์ฃผ ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

Birthday Reminder ๋ผ๋Š” ์ปจ์…‰์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 5๋ช… ๊ฐ€๋Ÿ‰์˜ ์‚ฌ๋žŒ ํ”„๋กœํ•„์ด ํ•„์š”ํ•ด์„œ ๋ ˆ๋“œ๋ฒจ๋ฒณ ๋ฉค๋ฒ„๋“ค ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ๊ธ์–ด์„œ ์‚ฌ์šฉํ–ˆ๊ณ ์š”. ๋‚˜์ด๋Š” ์ œ๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ์ง€์–ด๋‚ธ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋ง˜๋Œ€๋กœ ์“ด๊ฑฐ๋‹ˆ ์˜คํ•ด๋งˆ์„ธ์š”~

 

 

โœ… App.js ์— ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ๋‹ด์€ data ํŒŒ์ผ์„ importํ•ด์ฃผ๊ณ  ๋ฐ์ดํ„ฐํŒŒ์ผ์ด ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜ํƒ€๋‚  List ํŒŒ์ผ๋„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ import ํ•ด์ค๋‹ˆ๋‹ค.

 

โœ… ์ด๋ฆ„, ๋‚˜์ด, ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ useState ์•ˆ์— ๋‹ด์•„์ค๋‹ˆ๋‹ค.

โœ… 6๋ฒˆ์งธ ์ค„์„ ๋ณด์‹œ๋ฉด ์ผ๋‹จ, state๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. [people, setPeople] ์€ ์•ˆ์ชฝ์—๋Š” state๋ณ€์ˆ˜๋ฅผ ๋’ค์— ์žˆ๋Š” ๊ฒƒํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜, ์ด ๋ง์ธ ์ฆ‰์Šจ ์–ด๋– ํ•œ ๋ช…๋ น์ด ๋–จ์–ด์กŒ์„ ๋•Œ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’์„ ๋‹ด๋Š” ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โœ… useState() ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ์ธ์ž๋Š” ์ดˆ๊ธฐ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐํŒŒ์ผ์ด ๋“ค์–ด๊ฐ€์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐํŒŒ์ผ ์•ˆ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ค์ •์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โœ… import ๋œ < List />ํŒŒ์ผ์— props๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค. ๊ทธ ๋ฐ‘์— ์žˆ๋Š” clear ๋ฒ„ํŠผ์„ ๋ณด์„ธ์š”!

โœ… onClick์œผ๋กœ ์–ด๋– ํ•œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์ด๋•Œ ๊ทธ ์–ด๋– ํ•œ ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด๊ฒ ์ง€์š”! ์ด ๋•Œ, ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ setPeople ์•ˆ์— ๋น„์–ด์žˆ๋Š” array๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด people์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์ด ๋นˆ ๋ฐฐ์—ด๋กœ ๋ฐ”๋€Œ๊ฒ ์ง€์š”?! UI์ƒ์˜ ์‚ญ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค์‹œ ๋œฌ๋‹ต๋‹ˆ๋‹ค

 

 

 

์‰ฝ์ฃ ? ์‚ฌ์šฉ์‹œ ์œ ์˜์‚ฌํ•ญ์€ useState๋Š” ํ•ญ์ƒ ํ•จ์ˆ˜๋‚˜ ์ปดํผ๋„ŒํŠธ ์•ˆ์— ์†ํ•ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฐ–์—์„œ ์„ ์–ธํ•˜์‹ค ๊ฒฝ์šฐ ์ ์šฉ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ƒ ๊ฐ„๋‹จํ•˜๊ฒŒ useState ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์˜€์Šต๋‹ˆ๋‹ค

 

 

 

 

 

728x90