๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[React] ๋ฆฌ์•กํŠธ - useState ๋ณธ๋ฌธ

๐Ÿ–Œ๏ธWeb/React

[React] ๋ฆฌ์•กํŠธ - useState

๋ฃจ๋ฆฌ์•ผใ…‘ 2024. 4. 25. 16:05
๋ฐ˜์‘ํ˜•

React์—์„œ useState๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ›…(hook)์ด๋‹ค.
์ด ํ›…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ ๋‚ด์— ์ƒํƒœ(state)๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒํƒœ๋ž€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ์ดํ„ฐ ๋˜๋Š” ์†์„ฑ์„ ์˜๋ฏธํ•˜๋ฉฐ,
์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค React๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•œ๋‹ค.

useState ์‚ฌ์šฉ๋ฒ•

useState๋Š” ์ดˆ๊ธฐ ์ƒํƒœ ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ณ , ์ƒํƒœ ๊ฐ’๊ณผ ๊ทธ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

[useState ๊ธฐ๋ณธ๊ตฌ์กฐ]

  • state: ํ˜„์žฌ ์ƒํƒœ์˜ ๊ฐ’
  • setState: ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ•จ์ˆ˜
  • initialState: ์ƒํƒœ์˜ ์ดˆ๊ธฐ ๊ฐ’
const [state, setState] = React.useState(initialState);

 

useState๋Š” 0์„ ์ดˆ๊ธฐ ์ƒํƒœ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ counter๋ผ๋Š” ์ƒํƒœ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
counter๋Š” ํ˜„์žฌ ํด๋ฆญ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ด๊ณ ,
setCounter๋Š” counter๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

const [counter, setCounter] = React.useState(0);

 

์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•

setCounter ํ•จ์ˆ˜๋Š” counter ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ๋œ๋‹ค.

์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ƒˆ๋กœ์šด ์ƒํƒœ ๊ฐ’์„ ์ง์ ‘ ๋„˜๊ฒจ์ค„ ์ˆ˜๋„ ์žˆ๊ณ ,
ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋„˜๊ฒจ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

์•„๋ž˜์—์„œ onClick ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ
setCounter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ counter ๊ฐ’์„ ํ˜„์žฌ ๊ฐ’์—์„œ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

React๋Š” ์ด ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ ,
App ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜์—ฌ ํ™”๋ฉด์— ์ตœ์‹  ํด๋ฆญ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

const onClick = () => {
    setCounter(counter + 1);
};

 

useState๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์˜ ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒํƒœ์— ์˜์กดํ•˜๋Š” UI๊ฐ€ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด ๋™์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์€ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ˜์‘์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•