c9u11

React State DeepDive

โœ๐Ÿป์ด ๊ธ€์€ React์˜ State์— ๋Œ€ํ•ด์„œ DeepDiveํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

State

Component๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ์œ„๋กœ ๋งŽ์ด ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋กœ ๋งŽ์€ ์˜ˆ์ œ์—์„œ Counter๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ํ‘œ์‹œํ•˜๊ณ  Increase/Decrease๋ฅผ ํ†ตํ•ด ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œํ•˜์—ฌ ํ™”๋ฉด์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

React์—์„œ๋Š” ์ด์ฒ˜๋Ÿผ Component์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ State๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

State vs Variable

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” State๋Š” ์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ฐจ์ด์ ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜ ์—ฌ๋ถ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๋ณ€์ˆ˜๊ฐ€ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜์ด ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” 2๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค.

  1. ๋ Œ๋”๋ง ์‹œ ์ด์ „ ๊ฐ’์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ
  2. ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€์•Š์Œ

์ฆ‰, ์œ„์˜ ๋‘๊ฐ€์ง€ ์ด์œ ๋ฅผ ๋ฐ˜๋Œ€๋กœ ์ถฉ์กฑํ•œ๋‹ค๋ฉด ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๊ณ  State๋Š” ๋ชจ๋‘ ๋ฐ˜๋Œ€๋กœ ์ถฉ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Usage

import { useState } from 'react';

...

// index : State ๊ฐ’์„ ์˜๋ฏธํ•˜๋ฉฐ ์ดˆ๊ธฐ ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.
// setIndex : State ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ด๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” ๊ฐ’ ๋˜๋Š” Dispatch๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
const [index, setIndex] = useState(0);

์ด ๊ธ€์€ State ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๊ธ€์ด ์•„๋‹ˆ๊ธฐ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์˜ˆ์‹œ๋งŒ ์ž‘์„ฑํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

Feature

  • State๋Š” ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.
  • State๋Š” ๋น„๊ณต๊ฐœ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ