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 ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด์์ต๋๋ค
'๊ฐ๋ฐ > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React vs Vue.js ์ฐจ์ด์ (0) | 2022.03.02 |
---|---|
[React] ๋ฆฌ์กํธ ํ๋ก์ ํธ Netlify๋ก ๋ฐฐํฌํ๊ธฐ (0) | 2022.02.21 |
[React.Js] ๋ฆฌ์กํธ AXIOS ์ฌ์ฉํ๊ธฐ / API ๋ฐ์ดํฐ Fetchํ๊ธฐ (0) | 2022.02.18 |
[React.Js] ๋ฆฌ์กํธ Router ์ฌ์ฉํ๊ธฐ (0) | 2022.02.18 |
[React.Js] ๋ฆฌ์กํธ ์์ํ๊ธฐ, Create-React-App (0) | 2022.02.17 |