[React.Js] UseState ์ฌ์ฉ / ๊ฐ๋จํ ๋ฆฌ์คํธ ๋ง๋ค๊ณ ์ง์ฐ๊ธฐ
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 ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด์์ต๋๋ค