React State DeepDive
State
Component๋ ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ๋จ์๋ก ๋ง์ด ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์ํธ์์ฉ์ด ๋ง๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ค์๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ฐ๋จํ ์์๋ก ๋ง์ ์์ ์์ Counter๋ฅผ ๊ตฌํํฉ๋๋ค. ์ซ์๋ฅผ ๊ธฐ์ตํ์ฌ ํ์ํ๊ณ Increase/Decrease๋ฅผ ํตํด ์ฆ๊ฐ ๋๋ ๊ฐ์ํ์ฌ ํ๋ฉด์ ์ค์๊ฐ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
React์์๋ ์ด์ฒ๋ผ Component์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ State๋ผ๊ณ ํฉ๋๋ค.
State vs Variable
์ฌ๊ธฐ์ ๋งํ๋ State๋ ์ผ๋ฐ ๋ณ์์๋ ๋ค๋ฆ ๋๋ค.
์ฐจ์ด์ ์ผ๋ก ์ค์๊ฐ ๋ฐ์ ์ฌ๋ถ๊ฐ ์์ต๋๋ค.
์ผ๋ฐ ๋ณ์๊ฐ ์ค์๊ฐ ๋ฐ์์ด ๋์ง ์๋ ์ด์ ๋ 2๊ฐ์ง ์ ๋๋ค.
- ๋ ๋๋ง ์ ์ด์ ๊ฐ์ ์ ์งํ์ง ์์
- ๋ณ์๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋์ง์์
์ฆ, ์์ ๋๊ฐ์ง ์ด์ ๋ฅผ ๋ฐ๋๋ก ์ถฉ์กฑํ๋ค๋ฉด ์ค์๊ฐ ๋ฐ์์ด ์ด๋ฃจ์ด์ง ์ ์๊ณ State๋ ๋ชจ๋ ๋ฐ๋๋ก ์ถฉ์กฑํ๊ณ ์์ต๋๋ค.
Usage
import { useState } from 'react';
...
// index : State ๊ฐ์ ์๋ฏธํ๋ฉฐ ์ด๊ธฐ ๊ฐ์ 0์
๋๋ค.
// setIndex : State ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํ ํจ์์ด๋ฉฐ ๋งค๊ฐ๋ณ์์๋ ๊ฐ ๋๋ Dispatch๊ฐ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
const [index, setIndex] = useState(0);
์ด ๊ธ์ State ์ฌ์ฉ๋ฒ์ ์ค๋ช ํ๋ ๊ธ์ด ์๋๊ธฐ์ ๊ฐ๋จํ๊ฒ ์์๋ง ์์ฑํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
Feature
- State๋ ๋ ๋ฆฝ์ ์ ๋๋ค.
- State๋ ๋น๊ณต๊ฐ ๋ณ์์ ๋๋ค.